在使用PrintWriter.write()方法时,我注意到有时[随机观察到问题]垃圾字符爬到了结尾/结果文件中。
还尝试了以下替代API。
StandardOpenOption [] openOption = {StandardOpenOption.CREATE,StandardOpenOption.APPEND}; writer = Files.newBufferedWriter(outFile,this.charsetEncoding,openOption);
在使用openjdk的linux服务器中看到此问题。
java版本“ 1.8.0_202” Java(TM)SE运行时环境(内部版本1.8.0_202-b32) Java HotSpot(TM)64位服务器VM(内部版本25.202-b32,混合模式)
代码:
osw = new OutputStreamWriter(new FileOutputStream(outFile, true), "ISO-8859-1");
coldelimiter = "\t";
rowdelimiter = "\n";
writer = new PrintWriter(new BufferedWriter(osw));
while (iterator.hasNext()) {
final DataToWrite data = iterator.next();
writer.write(data.getDataName());
writer.write(coldelimiter);
}
writer.write(rowdelimiter);
writer.flush();
预期:
testSystem testSystem 1 14 1受管系统1 1 1310 2019-04-10 01:00:00 2019-04-10 10 Alpha testSystem +0100 1 0 4 15 29201 15MIN 2019-04-10 00:00:00 2019 13
实际:
testSystem testSystem 1 14 1 manag)edSystem 1 1 1310 2019-04-10 01:00:00 2019-04-10 10 Alpha testSystem +0100 1 0 4 15 29201 15MIN 2019-04-10 00:00:00 2019 13`q
我希望在末尾添加新行[\ n],但有时会将诸如`q,)之类的垃圾字符添加到随机列中。
知道为什么会发生这种情况以及如何避免这种情况吗?