Java 中的 I/O(输入/输出)流是处理输入和输出的机制。在 Java 中,I/O 流主要分为两大类:字节流和字符流。每个类别又分为输入流和输出流。这两大类流都是用于在程序和外部源(文件、网络、内存等)之间传输数据的。
字节流以字节为单位进行读写,适用于处理二进制数据。Java 中的字节流主要由两个基本类组成:InputStream 和 OutputStream。
InputStream 是所有字节输入流的抽象基类。它定义了一些基本的方法来读取字节数据。以下是一些常见的 InputStream 的实现类:
1、FileInputStream: 用于从文件读取数据。
InputStream input = new FileInputStream("example.txt");
2、ByteArrayInputStream: 从字节数组中读取数据。
byte[] data = {65, 66, 67, 68};
InputStream input = new ByteArrayInputStream(data);
3、BufferedInputStream: 提供缓冲功能,提高读取性能。
InputStream input = new BufferedInputStream(new FileInputStream("example.txt"));
OutputStream 是所有字节输出流的抽象基类。它定义了一些基本的方法来写入字节数据。以下是一些常见的 OutputStream 的实现类:
1、FileOutputStream: 用于向文件写入数据。
OutputStream output = new FileOutputStream("example.txt");
2、ByteArrayOutputStream: 将数据写入字节数组。
ByteArrayOutputStream output = new ByteArrayOutputStream();
3、BufferedOutputStream: 提供缓冲功能,提高写入性能。
OutputStream output = new BufferedOutputStream(new FileOutputStream("example.txt"));
字符流以字符为单位进行读写,适用于处理文本数据。Java 中的字符流主要由两个基本类组成:Reader 和 Writer。
Reader 是所有字符输入流的抽象基类。它定义了一些基本的方法来读取字符数据。以下是一些常见的 Reader 的实现类:
1、FileReader: 用于从文件读取字符数据。
Reader reader = new FileReader("example.txt");
2、CharArrayReader: 从字符数组中读取数据。
char[] data = {'A', 'B', 'C', 'D'};
Reader reader = new CharArrayReader(data);
3、BufferedReader: 提供缓冲功能,提高读取性能。
Reader reader = new BufferedReader(new FileReader("example.txt"));
Writer 是所有字符输出流的抽象基类。它定义了一些基本的方法来写入字符数据。以下是一些常见的 Writer 的实现类:
1、FileWriter: 用于向文件写入字符数据。
Writer writer = new FileWriter("example.txt");
2、CharArrayWriter: 将数据写入字符数组。
CharArrayWriter writer = new CharArrayWriter();
3、BufferedWriter: 提供缓冲功能,提高写入性能。
Writer writer = new BufferedWriter(new FileWriter("example.txt"));
转换流是字符流和字节流之间的桥梁,提供了将字节流转换为字符流的能力。主要有 InputStreamReader 和 OutputStreamWriter。
InputStreamReader 是字节流到字符流的桥梁。它将字节流转换为字符流,可以指定字符集进行解码。
InputStream input = new FileInputStream("example.txt");
Reader reader = new InputStreamReader(input, "UTF-8");
OutputStreamWriter 是字符流到字节流的桥梁。它将字符流转换为字节流,可以指定字符集进行编码。
OutputStream output = new FileOutputStream("example.txt");
Writer writer = new OutputStreamWriter(output, "UTF-8");
对象流用于读写对象。主要有 ObjectInputStream 和 ObjectOutputStream。
ObjectInputStream 用于从流中读取对象。
InputStream input = new FileInputStream("object.dat");
ObjectInputStream objectInput = new ObjectInputStream(input);
ObjectOutputStream 用于向流中写入对象。
OutputStream output = new FileOutputStream("object.dat");
ObjectOutputStream objectOutput = new ObjectOutputStream(output);
Java 中的 I/O 流提供了丰富的工具和类,以满足不同类型数据的读写需求。字节流适用于处理二进制数据,而字符流适用于处理文本数据。转换流用于在字符流和字节流之间进行转换,对象流则用于读写对象。选择适当的流取决于所处理数据的类型和需求。通过合理使用这些流,可以实现高效的输入和输出操作。