IO流
简介
Java I/O 流(Input/Output Stream)是 Java 中进行数据输入和输出的核心组件,分为字节流和字符流两大类。它们可以处理文件、内存、网络、管道等不同的 I/O 源。
IO 流
IO 流层次结构图
1 | java.io.InputStream |
以上的 IO 流主要分为两个大类:
- 字节流(Byte Streams)
字节流处理的是二进制数据(8 位字节),用于处理任意类型的文件,如图像、音频等。字节流的两个核心抽象类是:- InputStream:字节输入流,用于从数据源读取字节数据。
- OutputStream:字节输出流,用于向目标输出字节数据。
- 字符流(Character Streams)
字符流处理的是文本数据(16 位 Unicode 字符),用于处理文本文件。字符流的两个核心抽象类是:- Reader:字符输入流,用于从数据源读取字符。
- Writer:字符输出流,用于向目标输出字符。
常用类:
- InputStream
- FileInputStream:从文件中读取字节数据。
- BufferedInputStream:为输入流提供缓冲机制,减少对磁盘等资源的频繁访问。
- DataInputStream:用于读取 Java 基本数据类型(如 int、float 等)。
- ObjectInputStream:用于反序列化对象,从流中恢复对象。
- ByteArrayInputStream:从字节数组中读取字节数据。
- PipedInputStream:实现管道输入流,用于线程间通信。
- OutputStream
- FileOutputStream:向文件中写入字节数据。
- BufferedOutputStream:为输出流提供缓冲机制,减少频繁的磁盘写入操作。
- DataOutputStream:用于将 Java 基本数据类型写入到输出流中。
- ObjectOutputStream:用于序列化对象,并将其写入输出流。
- ByteArrayOutputStream:将字节数据写入字节数组中。
- PipedOutputStream:实现管道输出流,用于线程间通信。
- Reader
- FileReader:从文件中读取字符数据,通常是文本文件。
- BufferedReader:为输入流提供缓冲机制,提高读取效率,提供按行读取的功能(readLine())。
- InputStreamReader:将字节流转换为字符流(常用于字节流与字符流之间的桥梁,如读取带有编码的文件)。
- StringReader:从字符串中读取字符数据。
- PipedReader:实现管道字符输入流,用于线程间通信。
- Writer
- FileWriter:向文件中写入字符数据,通常是文本文件。
- BufferedWriter:为输出流提供缓冲机制,提高写入效率。
- OutputStreamWriter:将字符流转换为字节流(常用于将字符数据写入带有编码的输出流中)。
- StringWriter:将字符数据写入字符串。
- PipedWriter:实现管道字符输出流,用于线程间通信。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AnA.!
评论