我想清除一個文件的內容女巫有一個特定的擴展名file.tctl,我不想改變任何關於該文件的事情既不刪除它。該文件是從一個特定的模型檢查器生成的,這樣我就可以刪除內容並編寫自己的內容。我想打印一個空字符串這樣的:如何刪除文件的內容而不刪除它自己?
PrintWriter writer = new PrintWriter(file.tctl); writer.print(""); writer.close();
但該文件無法正常工作了。所以如果有另一種方法來清除文件的內容。
我想清除一個文件的內容女巫有一個特定的擴展名file.tctl,我不想改變任何關於該文件的事情既不刪除它。該文件是從一個特定的模型檢查器生成的,這樣我就可以刪除內容並編寫自己的內容。我想打印一個空字符串這樣的:如何刪除文件的內容而不刪除它自己?
PrintWriter writer = new PrintWriter(file.tctl); writer.print(""); writer.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,然後你有截斷()方法:
File f = new File("path-of-the-file.here"); FileChannel channel = new FileOutputStream(f, true).getChannel(); channel.truncate(0); channel.close();
但如果我用新的文件,該文件將被刪除,新的文件,具有相同的名稱,將被創建。我想保留相同的文件 – user3417644 2014-09-05 22:22:10
不,新文件不會在目錄中創建新文件,它只會在java中創建「文件表示」。 – 2014-09-05 22:22:58
刪除追加模式和截斷也同樣適用:您不必這樣做。 – EJP 2014-09-06 00:04:23
剛剛從你的代碼完全取出打印。您已經使用新的FileOutputStream/PrintWriter /您使用的任何打開文件來截斷文件。沒有必要的I/O或truncate()。不要使用追加模式。
你能解釋一下嗎?我不明白你的意思 – user3417644 2014-09-06 12:48:03
最簡單的方法我想
new RandomAccessFile("filename.ext", "rw").setLength(0);
希望它有幫助;) – voxtor 2014-09-05 22:23:16
是的,這是有幫助的:D – user3417644 2014-09-05 22:52:45
第一個建議不編譯:第二個是多餘的。 – EJP 2014-09-06 00:05:21