Java 的 I/O(输入/输出)流是用于处理数据输入和输出的强大机制,是 Java 标准库中的一个重要部分。下面是一些关键知识点和总结:
1. 基本概念
流(Stream):流是一组有序的数据序列,从数据源流向数据目的地。Java 中的 I/O 流主要用于处理文件、网络、内存等数据源和数据目的地之间的数据传输。
输入流(Input Stream):用于从数据源读取数据。
输出流(Output Stream):用于向数据目的地写入数据。
2. 流的分类
根据操作的数据单位:
字节流:以字节为单位进行读写。常用的字节流类有 FileInputStream 和 FileOutputStream,以及它们的包装类 BufferedInputStream 和 BufferedOutputStream。
字符流:以字符为单位进行读写。常用的字符流类有 FileReader 和 FileWriter,以及它们的包装类 BufferedReader 和 BufferedWriter。
根据功能:
输入流:InputStream(字节输入流)和 Reader(字符输入流)是所有输入流的基类。
输出流:OutputStream(字节输出流)和 Writer(字符输出流)是所有输出流的基类。
3. 常用的 I/O 类和接口
字节流:
FileInputStream:从文件中读取字节流。
FileOutputStream:向文件中写入字节流。
BufferedInputStream:缓冲字节输入流,提高读取效率。
BufferedOutputStream:缓冲字节输出流,提高写入效率。
字符流:
FileReader:从文件中读取字符流。
FileWriter:向文件中写入字符流。
BufferedReader:缓冲字符输入流,可以按行读取。
BufferedWriter:缓冲字符输出流,可以按行写入。
转换流:
InputStreamReader:将字节输入流转换为字符输入流。
OutputStreamWriter:将字符输出流转换为字节输出流。
4. 装饰者模式
Java 的 I/O 流大量使用了装饰者模式,使得可以通过组合不同的流来实现更复杂的功能。例如:
通过 BufferedInputStream 装饰 FileInputStream,可以提高文件读取的效率。
通过 DataInputStream 装饰 InputStream,可以方便地读取基本数据类型。
5. 文件操作
File 类:java.io.File 类表示文件或目录,可以用来创建、删除、重命名文件和目录,以及获取文件的各种属性(如长度、最后修改时间等)。
随机访问文件:RandomAccessFile 类支持对文件进行随机访问(即可以在文件的任意位置读取或写入数据)。
6. 序列化与反序列化
ObjectInputStream 和 ObjectOutputStream:用于对象的序列化和反序列化,可以将对象写入文件或网络,以及从文件或网络中读取对象。
一个类要实现序列化,必须实现 Serializable 接口(标记接口,不需要实现任何方法)。
7. 管道流
PipedInputStream 和 PipedOutputStream:用于线程之间的数据传输,一个线程的输出流可以连接到另一个线程的输入流。
8. 总结
Java 的 I/O 流提供了丰富的类和方法,可以方便地处理不同类型的数据源和数据目的地。
字节流和字符流是两种基本的流类型,根据需求选择合适的流类型可以提高程序效率和可读性。
装饰者模式使得可以通过组合不同的流来实现复杂的功能。
文件操作、对象的序列化和反序列化、管道流等是 Java I/O 流的高级特性,可以满足更复杂的需求。
理解并掌握 Java 的 I/O 流机制,对于开发高效、可维护的 Java 应用程序至关重要。
标签:字符,Java,字节,输出,JavaIO,序列化,输入 From: https://blog.csdn.net/2301_77006130/article/details/143789147