RandomAccessFile setLength(0) 在文件中添加一串空字符[重复]。

问题描述 投票:0回答:1

我正试图清除我在java中制作的一个文件的内容。 该文件是由PrintWriter调用创建的。 我读到 此处 可以使用RandomAccessFile来清除文件,并在其他地方读到这样做比调用一个新的PrintWriter并立即关闭它来用一个空白的文件覆盖更好。

然而,使用RandomAccessFile清除文件似乎是在文件中添加了一串空字符(或者是PrintWriter?)只有在添加更多文本时才会出现这种情况。

PrintWriter writer = new PrintWriter("temp","UTF-8");

while (condition) {
writer.println("Example text");

if (clearCondition) {
writer.flush();
new RandomAccessFile("temp","rw").setLength(0);
      //  Although the solution in the link above did not include ',"rw"'
      //  My compiler would not accept without a second parameter
writer.println("Text to be written onto the first line of temp file");
}
}
writer.close();

运行相当于上面的代码,我的临时文件就会出现这样的内容。

^@^@^@^@^@^@^@^@^@^@^@^@^@Text to be written onto the first line of temp file

空字符的数量等于被删除的字符数(包括换行字符)。如果没有添加新的文本到文件中,则完全是空白。 注意:作者需要在文件被清除后,能够再次向文件写入 "示例文本"。 clearCondition并不意味着while循环被破坏。

EDIT:我不知道是什么原因导致了那些空字符。 我意识到我很笨,没有必要有一个临时文件,只需要一个临时的String,里面有以后要写入文件的所有数据。 字符串用=""来重置超级容易;谢谢大家的建议。

java null character randomaccessfile
1个回答
1
投票

将一个已打开的 PrintWriter 的文件上,并使用 RandomAccessFile 在同一时间。

如果您关闭您的写入器并在文件上打开一个新的写入器(而不是使用 RandomAccessFile)我想它会适合你的需要。

© www.soinside.com 2019 - 2024. All rights reserved.