Java 如何在不删除文件内容的情况下删除文件内容?

Java 如何在不删除文件内容的情况下删除文件内容?,java,file,Java,File,我想清除具有特定扩展名file.tctl的文件的内容,我不想更改该文件的任何内容,也不想删除它。该文件是从特定的模型检查器生成的,因此我只需删除内容并编写自己的文件。我试图打印一个空字符串,如下所示: PrintWriter=新的PrintWriter(file.tctl); 作者:印刷体(“”); writer.close() 但是这个文件不起作用了。因此,如果有其他方法来清除文件内容。您必须使用FileOutputStream,然后使用truncate()方法: 文件f=新文件(“文件路径.

我想清除具有特定扩展名file.tctl的文件的内容,我不想更改该文件的任何内容,也不想删除它。该文件是从特定的模型检查器生成的,因此我只需删除内容并编写自己的文件。我试图打印一个空字符串,如下所示:

PrintWriter=新的PrintWriter(file.tctl);
作者:印刷体(“”);
writer.close()


但是这个文件不起作用了。因此,如果有其他方法来清除文件内容。

您必须使用FileOutputStream,然后使用truncate()方法:

文件f=新文件(“文件路径.here”); FileChannel通道=新的FileOutputStream(f,true).getChannel(); 通道截断(0); channel.close(); 按如下方式调用write()方法:

.write((new String()).getBytes());
这将使您的文件为空。如果不起作用,请尝试以下方法:

FileOutputStream erasor = new FileOutputStream("filename.ext");
erasor.write((new String()).toByteArray());
erasor.close(); 
或者只是尝试覆盖文件

//open file in override mode
FileOutputStream out = new FileOutputStream("filename.ext");
//now anything that we write here will remove the old one so just write space ("") here 

只需从代码中完全删除打印。您已经使用新的FileOutputStream/PrintWriter/或您用来打开它的任何文件截断了该文件。不需要I/O或truncate()。不要使用附加模式。

我想这是最简单的方法

new RandomAccessFile("filename.ext", "rw").setLength(0);

但如果我使用新文件,该文件将被删除,并创建同名的新文件。我想保留相同的文件否,新文件不在目录中创建新文件,它只创建“文件表示”在java中,删除附加模式和截断同样有效:你不必这样做。是的,这很有帮助:D第一个建议不可编译:第二个建议是多余的。你能解释更多吗?我不明白你的确切意思
new RandomAccessFile("filename.ext", "rw").setLength(0);