Java保存TXT文件的实现方法
在Java中,保存TXT文件是常见的文件操作需求,主要通过java.io包中的类实现,以下是几种常用方法,涵盖不同场景下的需求。

使用FileWriter和BufferedWriter
FileWriter是基础的文件写入类,而BufferedWriter通过缓冲机制提高写入效率,适合处理大量文本数据,示例代码如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class SaveTxtFile {
public static void main(String[] args) {
String content = "这是要保存的文本内容";
try (BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"))) {
writer.write(content);
System.out.println("文件保存成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
说明:
try-with-resources语句确保资源自动关闭,避免内存泄漏。- 若文件已存在,
FileWriter会覆盖原内容;若需追加内容,需传入true参数(new FileWriter("example.txt", true))。
使用PrintWriter
PrintWriter提供格式化输出功能,支持写入基本数据类型(如int、double)和对象,示例:
import java.io.PrintWriter;
import java.io.IOException;
public class SaveWithPrintWriter {
public static void main(String[] args) {
try (PrintWriter writer = new PrintWriter("output.txt")) {
writer.println("第一行文本");
writer.printf("数字:%d,字符串:%s%n", 100, "Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
优势:
- 支持自动刷新(
autoFlush参数)和便捷的格式化方法(如printf)。
使用Files类(Java 7+)
java.nio.file.Files类提供了更简洁的API,适合现代Java开发,示例:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class SaveWithFiles {
public static void main(String[] args) {
String content = "使用Files类保存文件";
try {
Files.write(Paths.get("files_example.txt"), content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
特点:
- 直接以字节或字符数组写入,代码更简洁。
- 支持指定字符集(如
StandardCharsets.UTF_8)。
Java打开TXT文件的实现方法
读取TXT文件同样依赖java.io和java.nio.file包,以下是常用方法。
使用FileReader和BufferedReader
FileReader用于读取字符文件,BufferedReader提供缓冲和按行读取功能,示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadTxtFile {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
说明:
readLine()按行读取,返回null时表示文件结束。- 适合逐行处理文本(如日志文件)。
使用Scanner
Scanner类支持按分隔符读取数据,适合解析结构化文本,示例:

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class ReadWithScanner {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(new File("data.txt"))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
优势:
- 支持正则表达式分隔符(如
scanner.useDelimiter(","))。
使用Files类(Java 7+)
Files.readAllLines()可一次性读取所有行,适合小文件:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
public class ReadWithFiles {
public static void main(String[] args) {
try {
Files.lines(Paths.get("small_file.txt"))
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
特点:
- 返回
Stream<String>,支持流式处理(如过滤、映射)。
注意事项
- 异常处理:文件操作需捕获
IOException,确保程序健壮性。 - 字符集:读写时明确指定字符集(如
UTF-8),避免乱码。 - 资源管理:优先使用
try-with-resources,防止文件句柄泄漏。 - 大文件处理:避免一次性读取大文件,改用缓冲或流式处理。
通过以上方法,可灵活实现Java中TXT文件的保存与打开操作,满足不同场景的需求。



















