Java写入文本文件未完成

use*_*455 -1 java database io text-files

我正在使用BufferedWriter将一些数据写入文本文件.它比使用ODBC写入Access更快.代码看起来像这样:

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true));
Run Code Online (Sandbox Code Playgroud)

确实是使BufferedWriter追加,而不是覆盖.

bw.append(          
    country + "\t" +
    scenario + "\t" +
    tempStage + "\t" +
    year + "\t" +
    tempState
);
Run Code Online (Sandbox Code Playgroud)

它在以前的项目中对我有用.新问题:它只是在线中间扯出来.这是一个很好的路线:

SultanateOfBrunei   BeeBeeScenario  Other   2019
Run Code Online (Sandbox Code Playgroud)

最后一行通常如下所示:

SultanateOfBrunei   BeeBeeScenario  Other   2019 Nondyna
Run Code Online (Sandbox Code Playgroud)

或Sulta

甚至苏

我输入错误处理代码来忽略像那样奇怪的不完整的行.

这意味着并非所有数据都被写入.我可以放弃一个基准,没问题......但它似乎正在削减更多.模拟运行时间为1990年到2020年底,它通常会在2019年的某个地方出现.增加VM会有所帮助 - 它会进一步发展.但我只有一定的记忆!

任何见解?

谢谢!!

Ste*_*n C 5

您的应用程序可能没有关闭BufferedWriter,因此输出的最后部分没有写入文件.

程序的结构应该是这样的:

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true));
try {
    // generate output
} finally {
    bw.close();
}
Run Code Online (Sandbox Code Playgroud)

请注意,这不会尝试处理打开,写入或关闭编写器时可能出现的I/O异常.您是否应该这样做,以及您应该对您捕获的任何异常做什么取决于具体情况.