0

我正在尝试清除我在 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 循环被破坏。

编辑:我不知道是什么导致了这些空字符。我意识到我很愚蠢,没有必要有一个临时文件,只是一个临时字符串,其中包含稍后将写入文件的所有数据。使用 = ""; 重置字符串非常容易 感谢所有的建议

4

1 回答 1

1

PrintWriter在文件上打开并同时使用 a似乎不是一个好主意RandomAccessFile

如果你关闭你的作家并在文件上打开一个新的(而不是使用RandomAccessFile)我认为它会满足你的需要。

于 2014-02-01T02:16:47.833 回答