如何在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
相关产品推荐
相关产品推荐

