每天开心一点

java IO 流学习总结

2019-12-04 17:03:00    六月    1105    来源: https://blog.csdn.net/qq_16605855/article/details/88570387

java.io 包下的IO流很多:

其中,以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。所有的输入流都是抽象类InputStream(字节输入流)或者抽象类Reader(字符输入流)的子类,所有的输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的子类。字符流能实现的功能字节流都能实现,反之不一定。如:图片,视频等二进制文件,只能使用字节流读写。

1、字符流FileReader和FileWriter

2、字符缓冲流BufferedReader和BufferedWriter

3、字节流FileInputStream和FileOutputStream

4、字节缓冲流BufferedInputStream和BufferedOutputStream

5、转换流:InputStreamReader和OutputStreamWriter

6、打印流PrintWriter和PrintStream

7、对象操作流ObjectInputStream和ObjectOutputStream

8、SequenceInputStream

9、用于操作数组和字符串的流对象

10、RandomAccessFile

11、File类:

12、IO流使用规律总结:

 (1)明确要操作的数据是数据源还是数据目的(要读还是要写)

      源:InputStream  Reader

      目的:OutputStream  Writer

 (2)明确要操作的设备上的数据是字节还是文本

      源:

          字节:InputStream

          文本:Reader

      目的:

          字节:OutputStream

          文本:Writer

(3)明确数据所在的具体设备

      源设备:

        硬盘:文件 File开头

        内存:数组,字符串

        键盘:System.in

        网络:Socket

      目的设备:

        硬盘:文件 File开头

        内存:数组,字符串

        屏幕:System.out

        网络:Socket

(4)明确是否需要额外功能?

    需要转换——转换流 InputStreamReader OutputStreamWriter

    需要高效——缓冲流Bufferedxxx

    多个源——序列流 SequenceInputStream

    对象序列化——ObjectInputStream,ObjectOutputStream

    保证数据的输出形式——打印流PrintStream Printwriter

    操作基本数据,保证字节原样性——DataOutputStream,DataInputStream