上一篇                     
               
			  Java怎么保存和打开txt文件?
- 后端开发
- 2025-06-07
- 4078
 在Java中保存txt文件,通常使用
 
 
FileWriter或
 BufferedWriter配合
 File类实现文本写入,打开文件则通过
 FileReader或
 BufferedReader逐行读取内容,需注意异常处理(如
 IOException)和资源关闭(推荐try-with-resources),示例代码简洁易用,适合基础文件操作。
在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):// 写入时指定编码 BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(new FileOutputStream("file.txt"), StandardCharsets.UTF_8) ); // 读取时指定编码 BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream("file.txt"), StandardCharsets.UTF_8) );
-  异常处理 
 必须捕获IOException,推荐 try-with-resources(自动关闭资源,避免泄漏)。
-  文件路径 - 相对路径:基于项目根目录(如 "data.txt")。
- 绝对路径:完整路径(如 "C:/folder/file.txt"),注意Linux/Windows路径分隔符差异。
 
- 相对路径:基于项目根目录(如 
-  性能优化 - 大文件读写:用 BufferedReader/BufferedWriter减少I/O次数。
- 避免 Files.readAllLines()处理超大文件。
 
- 大文件读写:用 
完整流程示例:保存并读取文件
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());
        }
    }
} 
常见问题解决
-  文件不存在? 
 写入时会自动创建;读取前需检查Files.exists(Paths.get(path))。
-  乱码问题? 
 统一使用UTF-8编码,避免系统默认编码差异。
-  权限错误? 
 检查文件是否被其他程序占用,或Java进程是否有读写权限。
通过 FileWriter、BufferedReader 等核心类,结合try-with-resources确保安全,即可高效处理文本文件,务必注意编码规范和异常场景,保障代码健壮性。
引用说明:本文代码及规范参考自Oracle官方文档 Java I/O Tutorial 及Java API标准库说明,字符编码遵循UTF-8国际标准(RFC 3629),文件操作符合Java SE规范。
 
  
			 
			 
			 
			 
			 
			 
			