我想將文件'A'的內容複製到文件'B'。 複製完成後,我想清除文件'A'的內容,並想從頭開始寫入。 我無法刪除文件'A',因爲它與其他任務有關。如何刪除文本文件的內容而不刪除自己
我能夠使用java的文件API(readLine())複製內容,但不知道如何清除文件的內容並將文件指針設置爲文件的開頭。
我想將文件'A'的內容複製到文件'B'。 複製完成後,我想清除文件'A'的內容,並想從頭開始寫入。 我無法刪除文件'A',因爲它與其他任務有關。如何刪除文本文件的內容而不刪除自己
我能夠使用java的文件API(readLine())複製內容,但不知道如何清除文件的內容並將文件指針設置爲文件的開頭。
只是打印一個空字符串到文件後類RandomAccessFile中的setLength()方法。
向文件寫入空字符串,刷新和關閉。確保文件寫入器不處於附加模式。我認爲應該這樣做。
簡單,什麼都不寫!
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
從A複製到再次B打開文件中寫入模式,然後寫入空字符串在它
您想要的:
FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
這實際上是唯一正確的答案,因爲它不會刪除文件。所有其他答案都可以。 – EJP
我需要這個,因爲我想清除[logback-android](https://github.com/tony19/logback-android)庫創建的日誌文件。如果我手動刪除日誌文件,那麼該庫不夠聰明,如果有日誌寫入,則重新創建它,直到我重新啓動我的應用程序。所以我用這個方法和工作。我沒有學習太多。這是最好的方法嗎?請指教。 – Yeung
funnily,我有一個生產問題,因爲當我從.apk文件安裝的應用程序調用fileOnSdCard.setLength(0)時,Intenso卡類10凍結(並強制電池重置)。他們的4級卡從來沒有顯示出這個問題。 – Poutrathor
你可以寫一個通用的方法(爲時已晚,但下面的代碼將幫助您/其他)
public static FileInputStream getFile(File fileImport) throws IOException {
FileInputStream fileStream = null;
try {
PrintWriter writer = new PrintWriter(fileImport);
writer.print(StringUtils.EMPTY);
fileStream = new FileInputStream(fileImport);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
writer.close();
}
return fileStream;
}
這不會創建一個空文件,它會創建一個文件,其中包含一個空字節。 – EJP
只要寫:
FileOutputStream writer = new FileOutputStream("file.txt");
一個用於Java的最佳伴侶是Apache Projects並請參考。有關文件相關操作,請參閱Commons IO項目。
下面的一行代碼將幫助我們使文件變空。
FileUtils.write(new File("/your/file/path"), "")
您可以使用
FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush();
pw.close();
切記不要使用
FileWriter fw = new FileWriter(/*your file path*/,true);
真正的FileWriter的構造將使追加。
如何如下:
File temp = new File("<your file name>");
if (temp.exists()) {
RandomAccessFile raf = new RandomAccessFile(temp, "rw");
raf.setLength(0);
}
一個襯墊,使截斷操作:可
FileChannel.open(Paths.get("/home/user/file/to/truncate")).truncate(0).close();
更多信息在Java文檔:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html
如果您不需要使用作家之後,最簡單最乾淨的做法就是這樣:
new FileWriter("/path/to/your/file.txt").close();
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");
嗨,您可以使用{}讓您的代碼易於閱讀 –
歡迎來到SO!請使用內置的格式化工具讓您的代碼更易於閱讀。 –
寫入不是必需的,如果另一個任務將文件打開,則打開可能不可能。 – EJP
writer.close ??我們在2017!另外,不需要打印(「」),因爲文本將被覆蓋 – FSm
@Andro,注意時間戳和標籤?那時我記得這是在Android設備上清空文件的最可靠的方法。 – Vlad