java 流的转换_Java数据流格式转换

1 字节流

InputStream                  ->FileInputStream

OutputStream                 ->FileOutputStream

2 . 字符流

Reader -> BufferedReader     -> LineNumberReader

-> InputStreamReader  -> FileReader

Writer -> BufferedWriter

-> OutputStreamWriter -> FileWriter

InputStreamReader   OutputStreamWriter  为转换流,FileReader FileWriter为其子类

如何选用哪种流读取文件?

IO流分为字符流 与 字节流,根据读写文件确定使用哪一种流,比如

读取文件是否为文本:

是:用字符流

不是:用字节流

何时使用转换流?

1.

如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件

比如:

当我们使用默认GBK编码保存文本时,下面2句代码其实是一样的效果,

new OutputStreamWriter(new FileOutputStream("out.txt"))

new FileWriter("out.txt")

当要求保存为其他编码比如UTF-8时,就要这样写

new OutputStreamWriter(new FileOutputStream("out.txt"),"UTF-8")

而如果要读取一个UTF-8编码的文本文件时,同样的要用

new InputStreamReader(new FileInputStream("in.txt"),"UTF-8");

而不能用new FileWriter("in.txt")

2.

当文件是字节文件时:

读取:提高效率用BufferedReader的独有快速方法时,需要转换。FileInputStreamBufferedReader

输出:提高效率一般用BufferedWriter缓存,需要转换。FileOutputStreamBufferedWriter

当文件是字符流时:需要转换。

计算机处理的是字节数据读取时:将字符转换为字节,FileReader  BufferedRead

输出时:将字节转换为字符,FileWriter BufferedWriter

总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。


版权声明:本文为weixin_39746794原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。