Skip to content

Java 文件操作基础

1. 引言

在 Java 中,处理文件是非常常见的任务。Java 提供了 java.io 包中的类来实现文件的读取、写入和复制等操作。

2. 常用类介绍

  • File: 表示一个抽象的文件或目录。
  • ** FileReader/FileWriter**: 处理字符流,用于按字符进行读写。
  • ** BufferedReader/BufferedWriter**: 对 ReaderWriter 进行包装,提供缓冲功能以提高效率。

3. 文件操作步骤

  1. 创建一个表示目标文件的 File 对象。
  2. 使用 FileReader 或 FileWriter 打开该文件。
  3. 读取或写入数据。
  4. 关闭流并释放资源。

4. 示例代码

a) 写入内容到文件中
java
import java.io.FileWriter;
import java.io.IOException;

public class FileOperations {
    public static void main(String[] args) throws IOException {
        String content = "Hello, Java 文件操作!";
        String filePath = "src/main/java/com/example/output.txt";

        // 创建 FileWriter 对象并写入内容
        try (FileWriter writer = new FileWriter(filePath)) {
            writer.write(content);
            System.out.println("文件已成功写入: " + filePath);
        } catch (IOException e) {
            System.err.println("写入文件时发生错误: " + e.getMessage());
        }
    }
}
b) 从文件中读取内容
java
import java.io.FileReader;
import java.io.IOException;

public class FileOperations {
    public static void main(String[] args) throws IOException {
        String filePath = "src/main/java/com/example/output.txt";

        // 创建 FileReader 对象并读取内容
        try (FileReader reader = new FileReader(filePath)) {
            int character;
            StringBuilder textContent = new StringBuilder();

            while ((character = reader.read()) != -1) {
                textContent.append((char) character);
            }

            System.out.println("文件内容: " + textContent.toString());
        } catch (IOException e) {
            System.err.println("读取文件时发生错误: " + e.getMessage());
        }
    }
}
c) 复制文件
java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOperations {
    public static void main(String[] args) throws IOException {
        String sourcePath = "src/main/java/com/example/output.txt";
        String destinationPath = "src/main/java/com/example/copy.txt";

        // 使用 FileInputStream 和 FileOutputStream 复制文件
        try (FileInputStream inputStream = new FileInputStream(sourcePath);
             FileOutputStream outputStream = new FileOutputStream(destinationPath)) {

            byte[] buffer = new byte[1024];
            int bytesRead;

            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }

            System.out.println("文件已成功复制: " + sourcePath + " -> " + destinationPath);
        } catch (IOException e) {
            System.err.println("复制文件时发生错误: " + e.getMessage());
        }
    }
}

5. 注意事项

  • 在进行 I/O 操作之前,确保目标路径存在或有权限创建。
  • 总是记得关闭流以释放资源。使用 try-with-resources 是一种很好的实践,因为它会自动管理资源的关闭。