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