You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中读取已有文件?解决PrintWriter覆盖原有文件问题

嘿,我来帮你理清这两个问题~首先得明确一个核心点:PrintWriter是专门用来写入数据的工具,它根本不负责读取文件,所以咱们分开解决你的需求:

1. 让PrintWriter不覆盖旧文件,而是追加内容到现有文件

你当前的代码会直接覆盖文件,因为默认的文件打开模式是"覆盖写入"。要想在已有文件末尾继续加内容,需要借助FileOutputStream的追加参数来构造PrintWriter:

// 第二个参数true表示开启追加模式,写入内容会加到文件末尾
PrintWriter writer = new PrintWriter(new FileOutputStream("location/name.txt", true));

之后用writer.println("要追加的内容")或者writer.write()写入的内容就不会覆盖原有文件了。

2. 读取现有TXT文件的内容(PrintWriter做不到,得用这些工具)

既然PrintWriter是写工具,读取就得用输入流类,最常用且易用的是BufferedReader配合FileReader,示例代码如下:

// try-with-resources语法:自动关闭流,不用手动写close(),更安全
try (BufferedReader reader = new BufferedReader(new FileReader("location/name.txt"))) {
    String line;
    // 逐行读取文件内容,直到读到文件末尾
    while ((line = reader.readLine()) != null) {
        // 这里可以处理每一行内容,比如打印或者存到集合里
        System.out.println(line);
    }
} catch (IOException e) {
    // 处理可能出现的IO异常,比如文件不存在、权限不足等
    e.printStackTrace();
}

另外补充下你提到的"加载已有的PrintWriter":如果你是指想复用一个已经创建好的PrintWriter实例,只要别调用writer.close(),保持对它的引用,就可以继续用它写入数据。如果是指重新打开之前写入过的文件,那用上面第一种追加模式的写法就可以啦。

内容的提问来源于stack exchange,提问作者jpthesolver2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:34:03