最近遇到了应用系统在生成批量文件时,文件尾部部分行缺失了一部分的情况。
写文件代码如下:
BufferedWriter writer = getFileWriter(path, "UTF-8");
writer.write(content);
writer.close();
查询后发现,是写文件时使用了BufferedWriter类未刷新stream导致的。
以上代码在content内容大小超过一定限制时,会有一定概率出现buffer中的内容未写入文件,导致文件内容丢失。但这个异常不是必然出现,所以测试阶段不一定能发现。
修改方法是在close之前,先flush:
BufferedWriter writer = getFileWriter(path, "UTF-8");
writer.write(content);
writer.flush(); //增加刷新stream
writer.close();