IO流的选择是开发中经常遇到的问题?下面是一张高度总结的IO流图,一张图搞定!
-------------------------------------------------------------------------------------------------------------------------------------------
简图:
IO流使用规律:
明确一、明确源和使用目的:(注意:读写都是针对内存就行操作,输入和输出是相对于硬盘的输入还是输出)记住这个以后就不会混掉!
源: 就要读,就需要使用输入系。InputStrea, Reader
目的:就需要些,就是需要使用输出系。
明确二:处理的数据是否是纯文本数据。
是:就使用字符流。
源:Reader
目的:Writer
否:就是用字节流。
源:InputStream
目的:OutputStream
两个明确都确定后,可以确定需要使用哪个体系。
明确三:具体是哪个设备,明确设备的目的是为了确定具体的对象。
源设备:
键盘,System.in
硬盘,操作文件的对象。File开头的流对象。
内存,数组。ByteArrayInputStream CharArrayReader StringReader
网络,Socket
目的设备:
硬盘,操作文件的对象。File开头的流对象。
屏幕(控制台)System.out
内存,数组 ByteArrayOutputStream CharArrayWriter StringWriter
网络,Socket
需求:将字符串数据写到硬盘上。
目的:OutputStream Writer
纯文本?是,Writer
设备?硬盘,FileWriter
FileWriter fw = new FileWriter("a.txt");
明确四:是否需要额外功能?
1,需要高效吗?BufferedInputStream BuffedOutputStream
2,需要字节和字符之间的桥梁吗?转换流。InputStreamReader OutputStreamWriter
3,需要保证数据输出时表现形式吗?PrintWriter PrintStream
4,需要对对象进行序列化和反序列化吗?ObjectInputStream ObjectOutputStream
5,需要操作基本数据类型值吗?DataInputStream DataOutputStream
6,需要进行数据的合并吗?SequenceInputStream
进阶图:||