2014-09-05 154 views
1

我想清除一個文件的內容女巫有一個特定的擴展名file.tctl,我不想改變任何關於該文件的事情既不刪除它。該文件是從一個特定的模型檢查器生成的,這樣我就可以刪除內容並編寫自己的內容。我想打印一個空字符串這樣的:如何刪除文件的內容而不刪除它自己?

PrintWriter writer = new PrintWriter(file.tctl); writer.print(""); writer.close();

但該文件無法正常工作了。所以如果有另一種方法來清除文件的內容。

回答

-1

打電話給你的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 
+0

希望它有幫助;) – voxtor 2014-09-05 22:23:16

+0

是的,這是有幫助的:D – user3417644 2014-09-05 22:52:45

+0

第一個建議不編譯:第二個是多餘的。 – EJP 2014-09-06 00:05:21

-1

你必須使用一個FileOutputStream,然後你有截斷()方法:

 
File f = new File("path-of-the-file.here"); 
FileChannel channel = new FileOutputStream(f, true).getChannel(); 
channel.truncate(0); 
channel.close(); 
+0

但如果我用新的文件,該文件將被刪除,新的文件,具有相同的名稱,將被創建。我想保留相同的文件 – user3417644 2014-09-05 22:22:10

+0

不,新文件不會在目錄中創建新文件,它只會在java中創建「文件表示」。 – 2014-09-05 22:22:58

+0

刪除追加模式和截斷也同樣適用:您不必這樣做。 – EJP 2014-09-06 00:04:23

0

剛剛從你的代碼完全取出打印。您已經使用新的FileOutputStream/PrintWriter /您使用的任何打開文件來截斷文件。沒有必要的I/O或truncate()。不要使用追加模式。

+0

你能解釋一下嗎?我不明白你的意思 – user3417644 2014-09-06 12:48:03

0

最簡單的方法我想

new RandomAccessFile("filename.ext", "rw").setLength(0); 
相關問題