Mic*_*ael 2 java exit bufferedwriter
假设Java应用程序使用BufferedWriterAPI 写入文件(并且flush在after之后不调用write)。我猜想如果应用程序退出时System.exit缓冲区没有刷新,那么文件可能已损坏。
还假设决定退出的应用程序组件不知道该组件正在写入文件。
解决“冲洗问题”的最简单,正确的方法是什么?
您可以使用Runtime.addShutdownHook方法,该方法可用于添加jvm关闭钩子。这基本上是一个未启动的线程,该线程在Java虚拟机关闭时执行。
因此,如果您拥有该线程可用的文件句柄,则可以尝试关闭流并刷新输出。
注意:尽管使用此选项似乎可行,但是我相信它会在实现上遇到挑战,因为这样的事实是,调用关闭挂钩时文件句柄是否不陈旧。因此,更好的方法应该是使用完成文件操作的代码中的finally块优雅地关闭流。