转载自:http://ggicci.blog.163.com/blog/static/2103640962012813997493/
Java :
- 关于 Java 流的笔记
State :
Java 流分为 字符流 和 字节流 两种。分别四个抽象类 Reader/Writer、InputStream/OutputStream 表示。
Hierachy :
Note : 抽象类 无公共构造器 已弃用 父类/超类 -----> 子类
How to use ?
Reader 与 Writer 所派生的子类用来处理字符流;InputStream 与 OutputStream 所派生的子类用来处理字节流。
- StringReader / StringWriter:由 String 构建字符流,StringReader 从字符串中读取字符,StringWriter 用其缓冲构造字符串;
- CharArrayReader / CharArrayWriter:由 char[] 构建字符流,CharArrayReader 从字符数组中读取字符数据,CharArrayWriter 有一个自动增长的字符数组缓冲,可构建字符数组。
- ByteArrayInputStream / ByteArrayOutputStream:由 byte[] 构建字节流,ByteArrayInputStream 从byte数组中读取字节数据,ByteArrayOutputStream 有一个自动增长的字节数组缓冲,可构建字节数组;
- BufferedReader / BufferedWriter:构建字符流缓冲器,读取与写入操作都先由缓冲完成,这样可以减少系统调用。 Reader , Writer 的子类均可构建缓冲,
1: public BufferedReader(Reader in);
2: public BufferedReader(Reader in, int sz);
3: public BufferedWriter(Writer out);
4: public BufferedWriter(Writer out, int sz);
比如对于 FileReader 的实例,我们可以这样调用来构建缓冲:1: BufferedReader bfReader = new BufferedReader(new FileReader("OOXX.txt"));
- PushbackReader / PushbackInputStream:分别可构建字符输入流与字节输入流,主要实现的是允许 unread() 方法把字符或字节压入流中;
- PipedReader / PipedWriter / PipedInputStream / PipedOutputStream:管道流,有 connect() 方法连接输入流与输出流,成对;
- InputStreamReader / OutputStreamWriter:字符流与字节流两者联系的桥梁。InputStreamReader 读取字节流解码为字符数据,OutputStreamWriter 写入字符流解码为字节数据;
- PrintWriter / PrintStream:分别用来输出格式化文本到字符输出流和根据平台的默认字符编码转换字符到字节,两者都可由 File、OutputStream、String构建, PrintWriter 还可由 Writer 构建,也就是说可以输出到文件、屏幕、字符串等;
- FileReader / FileWriter:文本文件的读写;
- BufferedInputStream / BufferedOutputStream:可以参考 BufferedReader / BufferedWriter,只不过这两个类用于字节流缓冲;
- DataInputStream / DataOutputStream:方便地流入流出不同类型的数据,DataOutputStream 流出的数据需要 DataInputStream 来流入解析。
End :
Author : Ggicci
Java 学习笔记整理,谢谢阅读,有误请指正!