Java怎么保存和打开txt文件?

在Java中保存txt文件,通常使用FileWriterBufferedWriter配合File类实现文本写入,打开文件则通过FileReaderBufferedReader逐行读取内容,需注意异常处理(如IOException)和资源关闭(推荐try-with-resources),示例代码简洁易用,适合基础文件操作。

在Java中保存和打开.txt文件是日常开发中的基础操作,下面详细介绍具体实现方法、最佳实践及完整代码示例,确保内容专业可靠,符合文件操作的核心规范(参考Oracle官方文档和Java API标准)。

Java怎么保存和打开txt文件?


保存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();
        }
    }
}
  • 适用场景:文件较小时使用(大文件可能内存溢出)。

关键注意事项

  1. 字符编码
    中文或特殊字符需显式指定编码(如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)
    );
  2. 异常处理
    必须捕获 IOException,推荐 try-with-resources(自动关闭资源,避免泄漏)。

    Java怎么保存和打开txt文件?

  3. 文件路径

    • 相对路径:基于项目根目录(如 "data.txt")。
    • 绝对路径:完整路径(如 "C:/folder/file.txt"),注意Linux/Windows路径分隔符差异。
  4. 性能优化

    • 大文件读写:用 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怎么保存和打开txt文件?

  • 权限错误?
    检查文件是否被其他程序占用,或Java进程是否有读写权限。


通过 FileWriterBufferedReader 等核心类,结合try-with-resources确保安全,即可高效处理文本文件,务必注意编码规范和异常场景,保障代码健壮性。

引用说明:本文代码及规范参考自Oracle官方文档 Java I/O Tutorial 及Java API标准库说明,字符编码遵循UTF-8国际标准(RFC 3629),文件操作符合Java SE规范。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/14304.html

(0)
酷盾叔酷盾叔
上一篇 2025年6月7日 18:12
下一篇 2025年6月2日 05:24

相关推荐

  • 为什么Java大小写敏感?

    Java是大小写敏感的编程语言,标识符如变量名、类名必须严格匹配大小写。”myVar”和”myvar”被视为不同实体,不一致会导致编译错误,需在编码时保持一致性以避免问题。

    2025年6月1日
    300
  • 如何高效编译Java源码包并快速解决问题?

    使用javac命令编译Java源码包,指定源码路径和输出目录,处理类文件依赖关系与包结构,对于多文件项目需同时编译相关类,或通过构建工具自动管理编译流程,确保环境变量配置正确。

    2025年5月28日
    400
  • Java类注释模板如何规范编写?

    Java类注释通常使用文档注释/** … */,包含类功能描述、作者、版本等信息,示例模板: ,/** , * 类功能简述 , * @author 姓名 , * @date 创建日期 , * @version 版本号 , */ ,可根据项目规范调整标签和内容。

    2025年5月29日
    300
  • Mac如何运行Java程序?

    在苹果系统上运行Java程序需先安装JDK,配置环境变量后,使用javac命令编译.java文件,再用java命令执行生成的.class文件即可。

    2025年5月31日
    500
  • JSP页面中如何用Java高效输出JSON数据

    在JSP页面中通过Java输出JSON时,需先设置响应类型为application/json,使用response.getWriter()或out对象直接写入JSON字符串,可通过手动拼接或Gson/Jackson等库序列化对象生成,确保无额外HTML标签干扰数据格式。

    2025年5月29日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN