文章字数:840,阅读全文大约需要3分钟
IO分类
从操作对象上可分为
- 文件流(file):
FileInputStreamFileOutputStreamFileReaderFileWriter - 字节数组(byte[]):
ByteArrayInputStreamByteArrayOutputStream - 字符数组(char[]):
CharArrayReaderCharArrayWriter - 管道操作:
PipedInputStreamPipedOutputStreamPipedReaderPipedWriter - 基本数据类型:
DataInputStreamDataOutputStream - 缓冲操作:
BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter - 打印:
PrintStreamPrintWriter - 对象序列化反序列化:
ObjectInputStreamObjectOutputStream - 转换:
InputStreamReaderOutputStreWriter
从传输方式上可以分为
- 字节流
InputStreamOutputStream - 字符流
ReaderWriter
字节流采用的是单个字节传输,可以用于处理二进制。字符则是根据编码由数个字节组成的,人可以阅读文字、符号。字符流用来处理文本文件。
抽象类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() | 关闭输出流,流关闭后不能再输出数据 |