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