面向字节的输入输出流
字节流以字节为传输单位,读写 8 位数据。除了纯文本,还能处理图片、音频这类二进制文件。InputStream 和 OutputStream 是所有字节流的父类,同样都是抽象类。
程序里真正 new 出来的,一般是它们某个子类的对象;调用继承来的 read() / write(),就能对外设做输入输出。
一、面向字节的输入流 InputStream
面向字节的输入流都是 InputStream 的子类,层次结构如图 10-6:
表 10-5 列出了 InputStream 的主要子类及说明:
二、面向字节的输出流 OutputStream
面向字节的输出流都是 OutputStream 的子类,层次结构如图 10-7:
表 10-7 列出了 OutputStream 的主要子类及说明:
| 抽象父类 | 方向 | 单位 | 典型子类 |
|---|---|---|---|
InputStream |
读入 | 字节(8 位) | FileInputStream、BufferedInputStream |
OutputStream |
写出 | 字节(8 位) | FileOutputStream、BufferedOutputStream |
三、抽象类怎么用
因为 InputStream 和 OutputStream 都是抽象类,不能直接 new。创建的输入/输出流对象,通常是某个具体子类的实例,再通过继承来的 read()、write() 完成读写。
-
文本、按行处理:优先字符流(Reader / Writer) -
图片、压缩包、任意二进制:用字节流 -
需要缓冲时,用对应的 Buffered 装饰流包一层
一句话总结:字节流管 8 位数据、能读二进制;具体读写交给 InputStream / OutputStream 的子类,不要去 new 这两个抽象类。
转载请注明来源:面向字节的输入输出流













