1.情景展示
有時候,我們需要這樣一種場景:
我們知道,在java中,往同一文件中寫入內容,如果該文件已經有內容的話,將要寫入的內容會自動拼接到原內容后面(不會破壞原文件內容)
但是,如果我們不想保留原有內容的話,在寫入內容之前需要進行內容清空,如何實現?
2.方式一(推薦使用)
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
// 創建原文件對象
final File file = new File("C:\\Users\\Marydon\\Desktop\\123-測試記錄.txt" );
try {
// 使用FileWriter不需要考慮原文件不存在的情況
// 當該文件不存在時,new FileWriter(file)會自動創建一個真實存在的空文件
FileWriter fileWriter = new FileWriter(file);
// 往文件重寫內容
fileWriter.write("");// 清空
fileWriter.flush();
fileWriter.close();
log.info("原文件內容清除完畢");
} catch (IOException e) {
e.printStackTrace();
}
2021-05-21
當文件處在使用中的時候,以*.log文件或者*.txt文件為例,不影響對文件內容的變更操作。
之前的日志內容已被清空。
說明:
獲取日志文件所在路徑,可以設置成動態獲取。
具體實現,見文末操作。
3.方式二
// 創建原文件對象 final File file = new File( "C:\\Users\\Marydon\\Desktop\\123-測試記錄.txt" ); // 方式二:刪除原文件、創建新文件 // 原文件存在即刪除 if (file.exists()) file.delete(); try { // 創建新(空)文件(原文件不存在時,才會創建成功) file.createNewFile(); log.info( "文件已被重新創建" ); } catch (Exception e) { e.printStackTrace(); }
使用前提:原文件不能被其它地方或程序占用。
無論什么樣的文件,以日志文件為例,當項目啟動后,指定將日志輸出到sys.log中,此時,使用方式二將原文件刪除,然后創建新文件的方式並不會生效。
注意:
至於輸入中文導致的亂碼問題不在本文的處理范圍內,創建文件的字符集由操作系統決定,詳見文末推薦。