【转】Java I/O 使用基本原则
?
Java IO 的一般使用原则 :??
原则一、按数据来源(去向)分类:
1 、文件:( 字节流 )FileInputStream, FileOutputStream;
??( 字符 ) FileReader,?FileWriter
2 、Byte[]: ByteArrayInputStream, ByteArrayOutputStream( 字节流 )
3 、Char[]: CharArrayReader, CharArrayWriter( 字符流 )
4 、String:?( 字节流 )StringBufferInputStream, StringBufferOuputStream
? ??( 字符流 )?StringReader,StringWriter
5 、网络数据流:?( 字节流 )?InputStream,OutputStream,( 字符流 )Reader, Writer
原则二、按是否格式化输出分:
1 、要格式化输出: PrintStream,PrintWriter
原则三、按是否要缓冲分:
1 、要缓冲:?( 字节流 )BufferedInputStream, BufferedOutputStream,
? ? ? ?( 字符流 )BufferedReader,BufferedWriter
原则四、按数据格式分:
1 、二进制格式(只要不能确定是纯文本的) :InputStream, OutputStream 及其所有带
Stream 结束的子类
2、纯文本格式(含纯英文与汉字或其他编码方式): Reader, Writer 及其所有带 Reader,
Writer 的子类
原则五、按输入输出分:
输入流,是把管子接到源,把流引入,引进,只能读。
输出流,是把管子接到源,把流引出,出口,只能写。
1 、输入: Reader,InputStream 类型的子类
2 、输出: Writer,OutputStream 类型的子类
原则六、特殊需要:
1 、从 Stream 到Reader,Writer 的转换类: InputStreamReader,
OutputStreamWriter
2 、对象输入输出:ObjectInputStream, ObjectOutputStream
3 、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4 、合并输入:SequenceInputStream
5 、更特殊的需要:PushbackInputStream, PushbackReader,
??LineNumberInputStream,LineNumberReader
?
I/O使用的一般准则步骤
1,考虑最原始的数据格式是什么:原则四
2,是输入还是输出:原则五
3,是否需要转换流:原则六第 1 点
4,数据来源(去向)是什么:原则一
5,是否要缓冲:原则三(特别注明:一定要注意的是 readLine() 是否有定义,有什么比
read, write更特殊的输入或输出方法)
6,是否要格式化输出:原则二?