Java怎么保存和打开txt文件?
- 后端开发
- 2025-06-07
- 7
在Java中保存和打开.txt文件是日常开发中的基础操作,下面详细介绍具体实现方法、最佳实践及完整代码示例,确保内容专业可靠,符合文件操作的核心规范(参考Oracle官方文档和Java API标准)。
保存TXT文件(写入数据)
Java提供多种类实现文本写入,核心步骤:创建文件→写入内容→关闭资源。
使用 FileWriter + BufferedWriter(高效推荐)
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class SaveTxtFile { public static void main(String[] args) { String filePath = "example.txt"; // 文件路径 String content = "Hello, Java!n这是第二行文本。"; // 写入内容 try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { writer.write(content); // 写入内容 System.out.println("文件保存成功!"); } catch (IOException e) { System.err.println("保存失败: " + e.getMessage()); } } }
- 优势:BufferedWriter 提供缓冲区,减少磁盘I/O次数,提升性能。
- 注意:默认覆盖原文件;需追加内容用 new FileWriter(filePath, true)。
使用 Files 工具类(Java 7+ 简洁写法)
import java.nio.file.Files; import java.nio.file.Paths; import java.io.IOException; public class SaveWithFiles { public static void main(String[] args) { String path = "nio_example.txt"; String text = "使用Files类写入文本"; try { Files.write(Paths.get(path), text.getBytes()); // 直接写入字节 System.out.println("文件已保存"); } catch (IOException e) { e.printStackTrace(); } } }
- 优势:代码简洁,自动处理资源关闭。
打开TXT文件(读取数据)
读取文本文件需注意字符编码(默认UTF-8)和异常处理。

使用 BufferedReader(逐行读取)
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadTxtFile { public static void main(String[] args) { String filePath = "example.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; System.out.println("文件内容:"); while ((line = reader.readLine()) != null) { // 逐行读取 System.out.println(line); } } catch (IOException e) { System.err.println("读取失败: " + e.getMessage()); } } }
使用 Files.readAllLines()(快速读取小文件)
import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.io.IOException; public class ReadWithFiles { public static void main(String[] args) { String path = "example.txt"; try { List<String> lines = Files.readAllLines(Paths.get(path)); for (String line : lines) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
- 适用场景:文件较小时使用(大文件可能内存溢出)。
关键注意事项
-
字符编码
中文或特殊字符需显式指定编码(如UTF-8):
-
异常处理
必须捕获 IOException,推荐 try-with-resources(自动关闭资源,避免泄漏)。
-
文件路径
- 相对路径:基于项目根目录(如 "data.txt")。
- 绝对路径:完整路径(如 "C:/folder/file.txt"),注意Linux/Windows路径分隔符差异。
-
性能优化
- 大文件读写:用 BufferedReader/BufferedWriter 减少I/O次数。
- 避免 Files.readAllLines() 处理超大文件。
-
文件不存在?
写入时会自动创建;读取前需检查 Files.exists(Paths.get(path))。

-
乱码问题?
统一使用UTF-8编码,避免系统默认编码差异。
-
权限错误?
检查文件是否被其他程序占用,或Java进程是否有读写权限。
完整流程示例:保存并读取文件
import java.io.*; public class TextFileDemo { public static void main(String[] args) { // 1. 保存文件 String path = "demo.txt"; saveToFile(path, "测试保存和读取nJava文件操作"); // 2. 读取文件 readFromFile(path); } static void saveToFile(String path, String content) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(path))) { writer.write(content); System.out.println("> 保存成功"); } catch (IOException e) { System.err.println("保存异常: " + e.getMessage()); } } static void readFromFile(String path) { try (BufferedReader reader = new BufferedReader(new FileReader(path))) { System.out.println("> 文件内容:"); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("读取异常: " + e.getMessage()); } } }
常见问题解决
通过 FileWriter、BufferedReader 等核心类,结合try-with-resources确保安全,即可高效处理文本文件,务必注意编码规范和异常场景,保障代码健壮性。
引用说明:本文代码及规范参考自Oracle官方文档 Java I/O Tutorial 及Java API标准库说明,字符编码遵循UTF-8国际标准(RFC 3629),文件操作符合Java SE规范。
