Java IO 的一般使用原则 :
- 按数据来源(去向)分类:
1 、操作对象是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )
2 、需要操作内存 : ByteArrayInputStream, ByteArrayOutputStream( 字节流 ),CharArrayReader, CharArrayWriter( 字符流 )
3 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )
4 、需要序列化对象输入输出: ObjectInputStream, ObjectOutputStream
5 、需要进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter - 需要格式化输出:
1 、要格式化输出: PrintStream, PrintWriter - 需要提高效率:
BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 ) - 按数据格式分:
1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类
2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类 - 需要字符字节转化:
字节流到 字符流的转换类: InputStreamReader, OutputStreamWriter - 多条流合并输入: SequenceInputStream
- 更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader
决定使用哪个类以及它的构造进程的一般准则如下:
第一:考虑操作对象是什么:纯文本 or 非纯文本 ,对象,网络数据?
第二:应用场景是什么:网络数据,文件的复制,进程之间?
第三:是输入还是输出:InputStream/OutputStream;Reader/Writer
第四:是否需要转换流:InputStreamReader/OutputStreamWriter
第五:是否要缓冲:BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 )
第六,是否要格式化输出
网友评论