7.2 读写文本文件

系列 -
目录
本教学实验手册介绍了如何在Java中使用FileWriter
和BufferedReader
进行文本文件的写入和读取操作。包括使用try-with-resources自动管理资源、处理文件不存在和覆盖情况,以及逐行读取文件内容。
任务一:写入文本文件
在Java中,写入文本文件最简单的方式是使用FileWriter。下面我们来创建一个程序,将文本写入文件:
import java.io.FileWriter;
import java.io.IOException;
public class Example08 {
public static void main(String[] args) {
// 使用try-with-resources自动关闭资源
try (FileWriter writer = new FileWriter("note.txt")) {
// 写入一些文本
writer.write("这是第一行\n"); // \n表示换行
writer.write("这是第二行\n");
System.out.println("文件写入成功!");
} catch (IOException e) {
System.out.println("写入文件出错:" + e.getMessage());
}
}
}
运行结果:
在项目根目录下可以找到note.txt文件,其内容为:
代码说明:
FileWriter writer = new FileWriter("note.txt")
- 创建FileWriter对象,如果文件不存在会自动创建
- 如果文件已存在,会覆盖原文件
writer.write("这是第一行\n")
- write方法用于写入字符串
- \n是换行符,表示换行
try-with-resources
语句- 自动处理资源关闭
- 不需要手动调用close()方法
补充:常规写法(不使用try-with-resources)
import java.io.FileWriter;
import java.io.IOException;
public class Example09 {
public static void main(String[] args) {
FileWriter writer = null; // 在try外声明,以便finally中可以访问
try {
writer = new FileWriter("note.txt");
writer.write("这是第一行\n");
writer.write("这是第二行\n");
System.out.println("文件写入成功!");
} catch (IOException e) {
System.out.println("写入文件出错:" + e.getMessage());
} finally {
// 在finally中确保关闭资源
if (writer != null) { // 防止writer未初始化就抛出异常
try {
writer.close(); // close()方法也可能抛出IOException
} catch (IOException e) {
System.out.println("关闭文件出错:" + e.getMessage());
}
}
}
}
}
任务二:读取文本文件
读取文本文件我们使用BufferedReader,它可以方便地实现逐行读取:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Example10 {
public static void main(String[] args) {
// 使用try-with-resources自动关闭资源
try (BufferedReader reader = new BufferedReader(
new FileReader("note.txt"))) {
String line;
// 逐行读取文件内容
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("读取文件出错:" + e.getMessage());
}
}
}
运行结果:
作业
编写一个Java程序,实现以下功能:
- 提示用户输入文件名
- 询问用户要写入多少行内容
- 循环让用户输入每行内容
- 将用户输入的内容写入文件
- 最后读取并显示文件内容
部分代码:
import java.io.*;
import java.util.Scanner;
public class FileOperationHomework {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 1. 获取文件名
// 2. 获取要写入的行数
// 3. 写入文件
// 4. 读取并显示文件内容
System.out.println("\n文件内容如下:");
System.out.println("--------------------");
}
}
运行截图: