6

我有以下代码

FileWriter F = new FileWriter("out.txt");
PrintWriter H = new PrintWriter(F);
H.print(split[split.length - 2]);
H.print("END");

但是,当我检查 txt 时,最后一个文本不是“END”,而是字符串中单词的一部分。这是“repa”

当我这样做时

FileWriter F = new FileWriter("out.txt");
PrintWriter H = new PrintWriter(F);
System.out.print(split[split.length - 2]);

我得到的最后一段文字是数字“49”——这是正确的。

看来 PrintWriter 没有完全写出字符串。但是,当我这样做时

FileWriter F = new FileWriter("out.txt");
PrintWriter H = new PrintWriter(F);
H.print(split[split.length - 2]);
H.println(pdfInText)://Another string
H.print("END");

“原始”文本现在实际上完成了 - 这是什么?

4

1 回答 1

15

你关闭了PrintWriter吗?从它的javadoc

与 PrintStream 类不同,如果启用了自动刷新,它将仅在调用 println() 方法之一时完成,而不是在碰巧输出换行符时完成。println() 方法使用平台自己的行分隔符概念,而不是换行符。

如果您确实关闭了PrintWriter(而不是 FileWriter!)flush(),请在打印后尝试强制执行。

于 2012-12-10T18:41:27.480 回答