Java IO(输入/输出)流主要分为以下几种类型:
字节流
字节流以字节为单位进行数据的读写操作,适用于处理二进制数据。
-
InputStream(输入流)
- FileInputStream:从文件系统中的某个文件获取输入字节流。
- ByteArrayInputStream:从字节数组中读取数据。
- PipedInputStream:用于线程间通信的管道输入流。
- ObjectInputStream:从流中读取对象。
-
OutputStream(输出流)
- FileOutputStream:将数据写入到文件系统中的某个文件。
- ByteArrayOutputStream:将数据写入到字节数组中。
- PipedOutputStream:用于线程间通信的管道输出流。
- ObjectOutputStream:将对象写入到流中。
字符流
字符流以字符为单位进行数据的读写操作,适用于处理文本数据。
-
Reader(读取器)
- FileReader:从文件系统中的某个文件获取字符输入流。
- BufferedReader:带有缓冲功能的字符输入流,可以提高读取效率。
- InputStreamReader:将字节流转换为字符流的桥梁。
- StringReader:从字符串中读取字符。
-
Writer(写入器)
- FileWriter:将字符数据写入到文件系统中的某个文件。
- BufferedWriter:带有缓冲功能的字符输出流,可以提高写入效率。
- OutputStreamWriter:将字符流转换为字节流的桥梁。
- StringWriter:将字符数据写入到字符串中。
缓冲流
缓冲流是在基本的输入输出流之上添加了一个缓冲区,可以减少对底层资源的访问次数,提高读写效率。
- BufferedInputStream 和 BufferedOutputStream:分别包装 InputStream 和 OutputStream。
- BufferedReader 和 BufferedWriter:分别包装 Reader 和 Writer。
数据流
数据流用于读写基本数据类型的数据。
- DataInputStream 和 DataOutputStream:分别包装 InputStream 和 OutputStream,用于读写基本数据类型。
对象流
对象流用于读写对象数据。
- ObjectInputStream 和 ObjectOutputStream:分别包装 InputStream 和 OutputStream,用于序列化和反序列化对象。
文件流
文件流用于读写文件。
- FileInputStream 和 FileOutputStream:分别用于读取和写入文件。
- FileReader 和 FileWriter:分别用于读取和写入文本文件。
序列化流
序列化流用于将对象转换为字节流以便存储或传输。
- ObjectOutputStream:用于将对象写入到输出流。
- ObjectInputStream:用于从输入流中读取对象。
其他流
还有一些特殊的流,如:
- PushbackInputStream:允许将读取的字节推回到流中。
- SequenceInputStream:将多个输入流合并为一个输入流。
- PipedInputStream 和 PipedOutputStream:用于线程间通信的管道流。
了解这些流的类型和用途,可以帮助你在不同的场景下选择合适的流进行数据的读写操作。