黑马程序员,Java I/O流学习

——-android培训、java培训、期待与您交流! ———-

java.lang.Object  java.io.Reader      java.io.InputStreamReader          java.io.FileReader

如何选用哪种流读取文件?io流分为字节流和字符流,根据文件的内容,选取适用的输入输出流:

对于像.txt、.java、.c、.bat等之类的文件可以选取字符流,读出的内容是可读的。

对于像.mp3、.avi、.rmvb等文件,这些是二进制文件,如果以字符流读取会出现乱码现象。何时使用转换流?如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FileReader 与 FileWriter 是默认编码的文本文件

比如:当我们使用默认GBK编码保存文本时,默认情况下下面的两条是一样的new OutputStreamWriter(new FileOutputStream("out.txt"))new FileWriter("out.txt")当要求保存为其他编码比如GBK时,就要这样写new OutputStreamWriter(new FileOutputStream("out.txt"),"GBK")而如果要读取一个GBK编码的文本文件时,同样的要用new InputStreamReader(new FileInputStream("in.txt"),"GBK");而不能用new FileWriter("in.txt")2.当文件是字节文件时: 读取:FileInputStreamBufferedReader 输出:FileOutputStream BufferedWriter当文件是字符流时:需要转换。计算机处理的是字节数据 读取时:将字符转换为字节,FileReader BufferedRead 输出时:将字节转换为字符,FileWriter BufferedWriter总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。

重要:而且Java内部处理字节流时,使用的是默认编码,Java在写入时,假如设置的编码非默认编码,将非默认编码的串传递给Java内部,Java内部将编码转换为默认编码的串,写入文件或者网络时,再将默认编码的串转换为用户设置的非默认编码。Java这样做,是为了编码的统一性。

我的眼泪流了下来,浇灌了下面柔软的小草,

黑马程序员,Java I/O流学习

相关文章:

你感兴趣的文章:

标签云: