我们将以 Java I/O 的基础知识为起点,为构建 MiniTomcat 打下坚实的文件处理与网络输入输出基础。在本模块中,你将深入了解 Java 的 I/O 系统体系,学会使用字节流和字符流进行高效的数据传输,并掌握常见的文件管理操作。

1. Java I/O 概览

Java 中的 I/O(Input/Output,输入/输出)操作允许程序与外部资源(如文件系统、网络套接字等)进行数据交互。Java 的 I/O 系统主要基于流(Stream)的概念,分为两种核心方式:

  • 字节流(Byte Stream):以字节为单位处理数据,适用于传输图像、音频、视频等二进制内容。
  • 字符流(Character Stream):以字符为单位处理数据,内置了字符编码转换机制,更适合处理文本文件。

2. 字节流与字符流

2.1 字节流 (InputStream 和 OutputStream)

字节流是 I/O 操作的基础,直接处理原始二进制数据。其主要抽象基类为 InputStreamOutputStream。常用的具体实现类包括:

  • FileInputStream:用于从文件中读取字节数据。
  • FileOutputStream:用于向文件中写入字节数据。

2.2 字符流 (Reader 和 Writer)

字符流在字节流的基础上进行了封装,能够自动处理字符编码问题,简化了文本操作。其主要抽象基类为 ReaderWriter。常用的具体实现类包括:

  • FileReader:用于从文件中读取字符数据。
  • FileWriter:用于向文件中写入字符数据。

3. 文件处理操作

在 Java 中,可以通过 java.io.File 类来管理文件和目录的元数据。常见的操作包括:

  • 创建文件file.createNewFile()
  • 删除文件file.delete()
  • 判断文件是否存在file.exists()
  • 获取文件路径file.getPath()

4. 代码示例

以下代码演示了如何使用字符流进行基本的文件写入与读取操作。示例中使用了 try-with-resources 语法,确保流在使用完毕后自动关闭,避免资源泄露。

import java.io.*;

public class FileIOExample {
    public static void main(String[] args) {
        // 写入文件
        try (FileWriter writer = new FileWriter("example.txt")) {
            writer.write("Hello, MiniTomcat!");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取文件
        try (FileReader reader = new FileReader("example.txt")) {
            int character;
            // 逐字符读取,直到文件末尾(返回 -1)
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. 实践任务 📝

为了巩固所学知识,请完成以下练习:

  1. 字节流练习:创建一个新的 Java 类,尝试使用 FileInputStreamFileOutputStream 来复制一个二进制文件(如图片),体会字节流的处理方式。
  2. 文件管理练习:使用 File 类创建一个指定目录,并在该目录下创建一个文件,将简单的文本内容写入其中。

完成这些练习后,你将掌握 Java I/O 的基础核心,并为后续 MiniTomcat 的文件处理与网络通信模块做好准备!如果在实践中遇到问题,欢迎随时提问 🦌

说明:本文示例代码使用了 try-with-resources 语法,需确保 Java 版本为 Java 7 或以上。此外,FileWriter 默认使用系统编码,在生产环境中处理文本时,建议显式指定字符编码(如 UTF-8)以避免乱码问题。