創建臨時文件
在java中創建臨時文件有許多場景,但是大多數是在單元測試或者是對上傳的文件進行內容處理。當測試用例或者文件處理完成后,你並不關心文件是否還存在。況且持續累積的無效文件無疑會浪費許多磁盤空間。
通過使用java.io.File.createTempFile()創建臨時文件
public class TemporaryFileExample { public static void main(String[] args) { File temp; try { temp = File.createTempFile("myTempFile", ".txt"); System.out.println("Temp file created : " + temp.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } }
windows系統中的輸出: C:\Users\admin\AppData\Local\Temp\myTempFile7295261447112135643.txt
通過使用NIO創建臨時文件
public class TemporaryFileExample { public static void main(String[] args) { try { final Path path = Files.createTempFile("myTempFile", ".txt"); System.out.println("Temp file : " + path); } catch (IOException e) { e.printStackTrace(); } } }
windows系統中的輸出: C:\Users\admin\AppData\Local\Temp\myTempFile3492283537103788196.txt
寫入臨時文件
比如在文件上傳的時候,我們就可以將字節流寫入臨時文件當中。
使用java.io.BufferedWriter寫入臨時文件
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class TemporaryFileExample { public static void main(String[] args) { File temp; try { temp = File.createTempFile("myTempFile", ".txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); bw.write("This is the temporary data written to temp file"); bw.close(); System.out.println("Written to Temp file : " + temp.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } }
使用NIO寫入臨時文件
如果你要使用java NIO庫,你就可以使用Files.write()方法
public class TemporaryFileExample { public static void main(String[] args) { try { final Path path = Files.createTempFile("myTempFile", ".txt"); System.out.println("Temp file : " + path); byte[] buf = "some data".getBytes(); Files.write(path, buf); } catch (IOException e) { e.printStackTrace(); } } }
刪除臨時文件
刪除臨時文件是非常重要的一步,因為你不想讓你的磁盤空間爆炸。
為了當在應用exit時(jvm終止)刪除文件,你可以使用:
File temp = File.createTempFile("myTempFile", ".txt");
temp.deleteOnExit();
或者如果你想要立馬刪除文件,你可以直接使用delete()
方法
File temp = File.createTempFile("myTempFile", ".txt");
temp.delete();
使用IO刪除臨時文件
import java.io.File; import java.io.IOException; public class TemporaryFileExample { public static void main(String[] args) { File temp; try { temp = File.createTempFile("myTempFile", ".txt"); System.out.println("Temp file created : " + temp.getAbsolutePath()); //temp.delete(); //立即刪除 temp.deleteOnExit(); //運行結束時刪除 System.out.println("Temp file exists : " + temp.exists()); } catch (IOException e) { e.printStackTrace(); } } }
使用NIO刪除臨時文件
public class TemporaryFileExample { public static void main(String[] args) { try { final Path path = Files.createTempFile("myTempFile", ".txt"); System.out.println("Temp file : " + path); // Files.delete(path); //立即刪除文件 Files.deleteIfExists(path); } catch (IOException e) { e.printStackTrace(); } } }
但是在進行刪除和創建文件的時候我使用的是hutool工具類中的fileUtil這個工具類
ls 列出目錄和文件
touch 創建文件,如果父目錄不存在也自動創建
mkdir 創建目錄,會遞歸創建每層目錄
del 刪除文件或目錄(遞歸刪除,不判斷是否為空),這個方法相當於Linux的delete命令
copy 拷貝文件或目錄
需要注意的是,del方法會刪除目錄而不判斷其是否為空,這一方面方便了使用,另一方面也可能造成一些預想不到的后果(比如拼寫錯路徑而刪除不應該刪除的目錄),所以請謹慎使用此方法。