gpt4 book ai didi

java - 如何使 BufferedWriter 在文本文件中最底部定义的行上写入?

转载 作者:行者123 更新时间:2023-12-02 07:24:43 25 4
gpt4 key购买 nike

public static void print(String id) {
try{
FileWriter fstream = new FileWriter("out.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(id +"\n");
out.close();
}catch (Exception e){
}
}

我在运行时调用此方法数十万次,但它不断覆盖第一行。我怎样才能让它从最下面一行开始? (我负责用转义序列定义下一行。)

或者有更优雅的解决方案吗?打开和关闭文本文件数十万次来存储我的模拟结果并不是很有效。但话又说回来,如果我在所有执行结束时在 main 中执行 out.close ,我会与很多人发生冲突,他们说与 I/O 相关的所有内容都应该放在 try/catch block 中(而且,我会必须处理函数从未被执行和未定义等)。

最佳答案

是的,您只需更改代码即可使用new FileWriter("out.txt", true)。这将附加到文件中。但是,还有其他选择:

  • 强烈建议使用OutputStreamWriter(包裹在FileOutputStream周围)而不是FileWriter 。这样您就可以指定文件的编码。你想要什么编码? (您仍然可以通过这种方式附加 - 只需使用适当的 FileOutputStream 构造函数。)

  • 为什么使用 BufferedWriter?您正在向写入器写入一个字符串,然后关闭写入器。您期望缓冲产生什么效果?

  • 目前您正在接受所有异常。即使您确实想要默默地吞下IOException,也不应该吞下其他异常。始终尽可能捕获特定异常。

  • 如果抛出异常,你就不是文件。您应该始终使用 finally block 关闭资源,或使用 try-with-resources Java 7 中的声明。

  • 每次写入时真的需要重新打开文件吗?为什么不让它保持打开状态,并在需要时写入它呢?然后在应用程序关闭时将其关闭。

关于java - 如何使 BufferedWriter 在文本文件中最底部定义的行上写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com