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会有所帮助 - 它会进一步发展.但我只有一定的记忆!
任何见解?
谢谢!!
您的应用程序可能没有关闭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异常.您是否应该这样做,以及您应该对您捕获的任何异常做什么取决于具体情况.