Java I/O 总结

  • public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。
  • public void close( ) : 关闭输出流并释放与流相关的系统资源。
  • 几种不同的OutputStream:

    1. ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
    2. FileOutputStream:把信息存入文件中
    3. PipedOutputStream:实现了pipe的概念,主要在线程中使用
    4. SequenceOutputStream:把多个OutStream合并为一个OutStream

    Reader和InputStream类似;Writer和OutputStream类似。

    有两个需要注意的:

    1. InputStreamReader  : 从输入流读取字节,在将它们转换成字符。
    2. BufferReader : 接受Reader对象作为参数,并对其添加字符缓冲器,使用readline()方法可以读取一行。

    如何选择I/O流

    1. 确定是输入还是输出 
      输入:输入流 InputStream Reader 
      输出:输出流 OutputStream Writer
    2. 明确操作的数据对象是否是纯文本 
      是:字符流 Reader,Writer 
      否:字节流 InputStream,OutputStream
    3. 明确具体的设备。
      • 文件: 
        读:FileInputStream,, FileReader, 
        写:FileOutputStream,FileWriter
      • 数组: 
        byte[ ]:ByteArrayInputStream, ByteArrayOutputStream 
        char[ ]:CharArrayReader, CharArrayWriter
      • String: 
        StringBufferInputStream(已过时,因为其只能用于String的每个字符都是8位的字符串), StringReader, StringWriter
      • Socket流 
        键盘:用System.in(是一个InputStream对象)读取,用System.out(是一个OutoutStream对象)打印
    4. 是否需要转换流 
      是,就使用转换流,从Stream转化为Reader、Writer:InputStreamReader,OutputStreamWriter
    5. 是否需要缓冲提高效率 
      是就加上Buffered:BufferedInputStream, BufferedOuputStream, BufferedReader, BufferedWriter
    6. 是否需要格式化输出

    示例代码