真正编程时如遇到Io操作时具体流对象使用的确定。
如:是使用字符流还是字节流,是否使用缓冲区等
1. 明确源和目的!
源和目的,也就是输入和输出。输入和输出分别对应两个顶层父类,一个字节流一个字符流
源:InputStream Reader
目的:OutputStream Writer
2. 明确文件数据是否为纯文本!
是纯文本!输入或读取则为: Reader
输出则为:Writer
不是纯文本! 输入或读取则为:InputStream
输出则为:OutputStream
到此可以明确具体使用的体系! 是Reader、Writer 还是 InputStream、OutputStream
3. 明确具体的设备!
输入设备:
硬盘:File
键盘:System.in
内存:数组
网络:socket流
输出设备:
硬盘:File
键盘:System.out
内存:数组
网络:socket流
到此可以明确具体使用的对象。
如纯文本文件的复制,则可以确定FileReader FileWriter
4 明确是否需要额外功能。
(1) 是否需要高效
是,Buffer 进行装饰。
例: 文本文件(.txt)的复制。
可以确定是纯文本 所以 确定体系为 Reader-Writer
复制 。可以确定输入设备(在此即为读取设备)和输出设备都是 硬盘:File
所以到此可以确定具体使用对象:FileReader---FileWriter
如果需要其他功能 如高效 则进行buffer装饰。
BufferedReader bufr = new BufferedReader(new FileReader("1.txt"));
对于操作其他类型文件可能还需要其他额外功能,如转换 InputStreamReader等。