文章字数:840,阅读全文大约需要3分钟
IO分类
从操作对象上可分为
- 文件流(file):
FileInputStream
FileOutputStream
FileReader
FileWriter
- 字节数组(byte[]):
ByteArrayInputStream
ByteArrayOutputStream
- 字符数组(char[]):
CharArrayReader
CharArrayWriter
- 管道操作:
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
- 基本数据类型:
DataInputStream
DataOutputStream
- 缓冲操作:
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
- 打印:
PrintStream
PrintWriter
- 对象序列化反序列化:
ObjectInputStream
ObjectOutputStream
- 转换:
InputStreamReader
OutputStreWriter
从传输方式上可以分为
- 字节流
InputStream
OutputStream
- 字符流
Reader
Writer
字节流采用的是单个字节传输,可以用于处理二进制。字符则是根据编码由数个字节组成的,人可以阅读文字、符号。字符流用来处理文本文件。
抽象类InputStream
方法 | 方法介绍 |
---|---|
int read() | 读取数据,返回一个字节。返回-1是读到文件末尾,正数强转就是相应的数据。 |
int read(byte b[]) | 将读取到的数据放入byte 数组b中,调用下一个方法实现的 |
int read(byte b[],int off,int len) | 从off位置读取len字节长度放到byte数组中。返回-1是读取结束,正数则是读取字符数。 |
long skip(long n) | 跳过指定个数的字节不读取 |
int available() | 返回可读的字节数量 |
void close() | 关闭流,释放资源 |
synchronized void mark(int readlimit) | 标记读取位置,下次还可以从这里读取。通过markSupported()查看是否支持。 |
synchronized void reset() | 重置读取位置为上次标记的位置 |
boolean markSupported() | 判断当前流是否支持标记流。 |
抽象类OutputStream
方法 | 方法介绍 |
---|---|
void write(int b) | 写入一个字节,对应上面read的int。int的32个位中低8位才会写入,其它舍弃。 |
void write(byte b[]) | 调用下面的方法,把数组中所有数据写入 |
void write(byte b[],int off,int len) | 将byte数组从off位置开始,写入len长度。(读多少写多少的话就是read的返回值) |
void flush() | 强制刷新,将缓冲区数据写入。有缓冲在close前执行一下 |
public void close() | 关闭输出流,流关闭后不能再输出数据了 |
抽象类Reader
方法 | 方法介绍 |
---|---|
int read(java.nio.CharBuffer target) | 读取字节到字符缓存中 |
int read() | 读取单个字符 |
int read(char cbuf[]) | 读取字符到指定的char数组中 |
int read(char cbuff[],int off,int len) | 从off位置读取len长度的字符到char数组中 |
long skip(long n) | 跳过指定长度的字符数量 |
boolean ready() | 判断当前流是否可读 |
boolean markSupported() | 判断当前流是否支持标记流 |
void mark(int readAheadLimit) | 标记读取位置,下次可以返回这里从新开始读取。需要判断是否支持 |
void reset() | 重置读取位置为上次mark标记的位置 |
void close() | 关闭流释放相关资源 |
抽象类Writer
方法 | 方法介绍 |
---|---|
void write(int c) | 写人一个字符 |
void write(char cbuf[]) | 写入一个字符数组 |
void write(char cbuf[],int off,int len) | 从字符数组的off位置写入len数量的字符 |
void write(String str) | 写入一个字符串 |
void write(String str,int off,int len) | 从字符串的off位置写入len数量的字符 |
Writer append(CharSequence csq) | 追加吸入一个字符序列 |
Writer append(CharSequence csq,int start,int end) | 追加写入一个16位的字符 |
void flush() | 强制刷新,将缓冲区中数据写入 |
void close() | 关闭输出流,流关闭后不能再输出数据 |