如何在Java Selenium的for循环中将控制台输出追加到TXT文件?
解决Java Selenium for循环中控制台输出追加到TXT文件的问题
你的代码会覆盖文件原有内容,核心原因是FileWriter默认以覆盖模式打开文件,每次调用name()方法时都会清空文件后写入新内容。另外FC.createNewFile()属于冗余操作,因为FileWriter在目标文件不存在时会自动创建。
修改方案1:调整原有代码实现追加
public static void name(String line) throws IOException { String TestFile = "D:/temp.txt"; // 启用追加模式,第二个参数true表示向文件末尾写入 FileWriter FW = new FileWriter(TestFile, true); BufferedWriter BW = new BufferedWriter(FW); BW.append(line); // 添加换行符,确保每次输出内容单独一行 BW.newLine(); // 依次关闭流 BW.close(); FW.close(); }
修改方案2:使用try-with-resources安全管理流(推荐)
Java 7及以上支持try-with-resources语法,它会自动关闭所有实现AutoCloseable接口的资源,避免手动关闭时可能出现的资源泄漏:
public static void name(String line) throws IOException { String TestFile = "D:/temp.txt"; // 自动关闭FileWriter和BufferedWriter try (FileWriter fw = new FileWriter(TestFile, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.append(line); bw.newLine(); // 适配不同系统的换行符 } }
关键说明
new FileWriter(TestFile, true)中的true参数是实现追加的核心,它指定文件打开模式为追加模式,新内容会被添加到文件末尾而非覆盖原有内容。bw.newLine()会根据当前操作系统自动生成对应的换行符(Windows为\r\n,Linux/macOS为\n),比硬编码"\n"兼容性更强。- 在for循环中调用该方法时,每次传入的内容都会被追加到文件末尾,且自动换行。
内容的提问来源于stack exchange,提问作者M Thomas Mary
相关产品推荐
相关产品推荐

