Java IO

作者: 农民工Alan | 来源:发表于2016-02-19 15:37 被阅读73次

阅读总结
IO流:
字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。

字节流和字符流的区别:
(1)读写单位不同:字节流以字节为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
(2)处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
(3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身直接操作的;而字符流在操作的时候是会用到缓冲区的,是通过缓冲区来操作文件的。
(4)字节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用colse()方法时,信息已经输出了,而字符流只有在调用close()方法关闭缓冲区时,信息才输出。要想字符流在未关闭时输出信息,则需要手动调用flush()方法。

优先选择字节流,对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
1.字符流
Reader -->
BufferedReader
InputStreamReader -- FileReader
StringReader
PipedReader
ByteArrayReader
FilterReader -- PushbackReader
Writer -->
BufferedWriter
OutputStreamWriter -- FileWriter
PrinterWriter
StringWriter
PipedWriter
CharArrayWriter
FilterWriter
2.字节流
InputStream -->
FileInputStream
FilterInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
ByteArrayInputStream
OutputStream -->
FileOutputStream
FilterOutputStream
ObjectOutputStream
PipedOutputStream

实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候是会用到缓冲区的,是通过缓冲区来操作文件的。
1.IO操作字节流好还是字符流好?
字节流。首先硬盘上的所有文件都是以字节流的形式进行传输或者保存的,包括图片等内容,但是字符只是在内存中才会形成的,所以在开发中,字节流使用更加广泛。

相关文章

网友评论

      本文标题:Java IO

      本文链接:https://www.haomeiwen.com/subject/veimkttx.html