Java课后习题13.1:文件读写操作详解

导言

在Java编程中,文件读写操作是非常常见和重要的一项技术。它可以用于读取原始数据或配置文件,处理大量数据,以及将程序的输出保存到文件中。在本文中,我们将详细介绍Java中的文件读写操作,并提供相应的代码示例。

文件读操作

Java提供了多种读取文件的方式,其中最常用的是使用FileReader和BufferedReader类。下面是一个读取文件的示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadingExample {
    public static void main(String[] args) {
        try {
            FileReader fileReader = new FileReader("example.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }

            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们首先创建一个FileReader对象,并将文件名传递给它。然后,我们将FileReader对象传递给BufferedReader类的构造函数,以创建一个BufferedReader对象。最后,我们使用readLine()方法逐行读取文件内容,并将每行内容打印到控制台上。需要注意的是,在文件读取完成后,需要调用close()方法关闭文件。

文件写操作

与文件读操作类似,Java也提供了多种写入文件的方式,最常用的是使用FileWriter和BufferedWriter类。下面是一个写入文件的示例代码:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileWritingExample {
    public static void main(String[] args) {
        try {
            FileWriter fileWriter = new FileWriter("example.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

            bufferedWriter.write("Hello, World!");
            bufferedWriter.newLine();
            bufferedWriter.write("This is an example of file writing.");

            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们首先创建一个FileWriter对象,并将文件名传递给它。然后,我们将FileWriter对象传递给BufferedWriter类的构造函数,以创建一个BufferedWriter对象。最后,我们使用write()方法将数据写入文件,并使用newLine()方法在每行的末尾添加一个换行符。需要注意的是,在文件写入完成后,需要调用close()方法关闭文件。

文件读写异常处理

在进行文件读写操作时,很容易遇到各种异常情况,比如文件不存在、读取错误或写入错误等。为了保证程序的健壮性和稳定性,我们需要对这些异常进行适当的处理。下面是一个文件读写异常处理的示例代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReadWriteExample {
    public static void main(String[] args) {
        try {
            // 文件读取
            FileReader fileReader = new FileReader("input.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }

            bufferedReader.close();

            // 文件写入
            FileWriter fileWriter = new FileWriter("output.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

            bufferedWriter.write("Hello, World!");
            bufferedWriter.newLine();
            bufferedWriter.write("This is an example of file reading and writing.");

            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用了try-catch语句块来捕获可能抛出的IOException异常。在异常发生时,我们通过调用e.printStackTrace()方法打印异常信息。这样,即使在出现异常的情况下,程序也可以正常执行,并提供有用的错误信息。

流程图

下面是文件读写操作的流程图:

flowchart TD
    subgraph 文件读取
        A[创建FileReader对象] --> B[创建BufferedReader对象]
        B --> C[逐行读取文件内容]
        C --> D[打印到控制台上]
        D --> E[关闭文件]
    end
    subgraph 文件写入
        F[创建FileWriter对象] --> G[创建BufferedWriter对象]
        G --> H[写入