使用RandomAccessFile清除Java中文件的内容

问题描述

您想刷新,PrintWriter以确保在将RandomAccessFile的长度设置为0 之前先写出其缓冲区中的更改,或者关闭它并重新打开新的PrintWriter以写入最后一行(要写入的文本。)。 )。最好是前者:

if (clearCondition) {
writer.flush();
new RandomAccessFile("temp","rw").setLength(0);

解决方法

我正在尝试清除我在Java中制作的文件的内容。该文件是通过PrintWriter调用创建的。我在这里读到可以使用RandomAccessFile这样做,而在其他地方读到,实际上它比调用一个新的PrintWriter并立即关闭以用空白文件覆盖该文件更好。

但是,使用RandomAccessFile不起作用,并且我不明白为什么。这是我的代码的基本轮廓。

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

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

if (clearCondition) {
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();

运行与上述代码等效的操作,为我的临时文件提供内容:(
让我们想象程序在遇到clearCondition之前循环了两次)

Example Text
Example Text
Text to be written onto the first line of temp file

注意:清除文件后,编写者需要能够再次将“示例文本”写入文件。clearCondition并不意味着while循环会中断。

相关问答

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
JavaMail问题:无法将命令发送到SMTP主机