IO流 四大基类 InputStream OutputStream Reader Writer 体系结构

IO流 四大基类 InputStream OutputStream Reader Writer

File类封装文件/目录的各种信息,以目录/文件为单位进行操作,但是我们不可以获取到文件/目录中的内容。

I/O : Input/Output的缩写,用于处理设备之间的数据的传输。IO流 当做一根 “管”:

IO流 四大基类 InputStream OutputStream Reader Writer 体系结构_第1张图片

四大抽象基类

IO流 四大基类 InputStream OutputStream Reader Writer 体系结构_第2张图片

其下的IO流类均为四大基类的子类

IO流的体系结构

分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象基类 InputStream OutputStream Reader Writer
文件流 FileInputStream FileOutputStream FileReader FileWriter
数组流 ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
管道流 PipedInputStream PipedOutputStream PipedReader PipedWriter
字符串流 StringReader StringWriter
缓冲流 BufferdInputStream BufferdOutputStream BufferdReader BufferdWriter
转换流 InputStreamReader OutputStreamWriter
对象流 ObjectInputStream ObjectOutputStream
过滤流 FilterInputStream FilterOutputStream FilterReader FilterWriter
打印流 PrintOutputStream PrintWriter
推回输入流 PushbackInputStream PushbackReader
数据流 DataInputStream DataOutputStream

InputStream

此抽象类是表示字节输入流的所有类的超类。 需要定义 InputStream 子类的应用程序必须总是提供返回下一个输入字节的方法。

  • 构造方法为空构造器InputStream()
Modifier and Type Method Description
int available() 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
void close() 关闭此输入流并释放与该流关联的所有系统资源。
abstract int read() 从输入流中读取数据的下一个字节。
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。off - 数组 b 中将写入数据的初始偏移量。
boolean markSupported() 测试此输入流是否支持 mark 和 reset 方法。
void mark(int readlimit) 在此输入流中标记当前的位置,readlimit - 在标记位置失效前可以读取字节的最大限制。
void reset() 将此流重新定位到最后一次对此输入流调用 mark 方法时的位置,以便后续读取重新读取相同的字节。 。
long skip(long n) 跳过和丢弃此输入流中数据的 n 个字节。

OutputStream

此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。

需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。

  • 构造方法为空构造器OutputStream()
Modifier and Type Method Description
void close() 关闭此输出流并释放与此流有关的所有系统资源。
void flush() 刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void write(int b) 将指定的字节写入此输出流。

Reader

用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

  • 字段摘要
    protected Object lock 用于同步针对此流的操作的对象。

构造方法

  • protected Reader() 创建一个新的字符流 reader,其重要部分将同步其自身的 reader。
  • protected Reader(Object lock) 创建一个新的字符流 reader,其重要部分将同步给定的对象。
Modifier and Type Method Description
abstract void close() 关闭该流并释放与之关联的所有资源。
int read() 读取单个字符。
int read(char[] cbuf) 将字符读入数组。cbuf - 目标缓冲区
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。off - 开始存储字符处的偏移量,len - 要读取的最多字符数
int read(CharBuffer target) 试图将字符读入指定的target字符缓冲区。
boolean ready() 判断是否准备读取此流。。
boolean markSupported() 判断此流是否支持 mark() 操作。
void mark(int readAheadLimit) 标记流中的当前位置。
void reset() 重置该流。
long skip(long n) 跳过字符。n - 要跳过的字符数

Writer

写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

  • 字段摘要
    protected Object lock 用于同步针对此流的操作的对象。

构造方法摘要

  • protected Writer() 创建一个新的字符流 writer,其关键部分将同步 writer 自身。
  • protected Writer(Object lock) 创建一个新的字符流 writer,其关键部分将同步给定的对象。
Modifier and Type Method Description
Writer append(char c) 将指定的 16 位字符 字符c添加到此 writer。
Writer append(CharSequence csq) 将指定字符序列添加到此 writer。csq - 要添加的字符串序列。如果 csq 为 null,则向此 writer 添加四个字符 “null”。
Writer append(CharSequence csq, int start, int end) 将指定字符序列的子序列添加到此 writer.Appendable。start - 子序列中第一个字符的索引,end - 子序列中最后一个字符后面的字符的索引
abstract void close() 关闭此流,但要先刷新它。
abstract void flush() 刷新该流的缓冲。
void write(char[] cbuf) 写入cbuf字符数组。
abstract void write(char[] cbuf, int off, int len) 写入cbuf字符数组的某一部分。off - 开始写入字符处的偏移量,len - 要写入的字符数
void write(int c) 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 c - 指定要写入字符的 int。
void write(String str) 写入str字符串。
void write(String str, int off, int len) 写入str字符串的某一部分。off - 相对初始写入字符的偏移量,len - 要写入的字符数 串。
void write(String str, int off, int len) 写入str字符串的某一部分。off - 相对初始写入字符的偏移量,len - 要写入的字符数

你可能感兴趣的