在使用PrintWriter.write()编写的文件中看到垃圾字符

时间:2019-04-23 11:47:51

标签: java

在使用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,)之类的垃圾字符添加到随机列中。

知道为什么会发生这种情况以及如何避免这种情况吗?

0 个答案:

没有答案