有办法做到这一点吗?
我正在编写一个必须迭代很长时间的程序,而这样做应该写入文件。我想在手动终止程序后立即关闭流,这样做可以避免由于未关闭的流而丢失数据的风险。应该有一种方法来处理异常处理,但我不确定。任何建议都非常感谢!
谢谢
答案 0 :(得分:2)
在main中:
try {
startapp();
} finally {
closeAll();
}
在closeAll()中,您可以执行安全关闭操作 即使异常发生,finally块中的代码也会执行。
答案 1 :(得分:1)
使用异常来控制程序执行的方式与设计方式不一致。使用关闭钩子会好得多。
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// Close streams here
}
});
这样可以正常处理大多数正常停机,但在硬暂停(SIGKILL)的情况下,不能保证关机挂钩运行。但这并不比你试图通过finally块关闭流更糟糕。
答案 2 :(得分:0)
我找到了办法!我花了这么多时间,没有注意到当程序终止时流会自动关闭......
数据没有被写入,因为我没有在write()方法之后使用flush()方法,如下所示:
out.write(line);
out.flush();
谢谢大家的帮助