方法:
createTempFile( String perfix,String suffix );//perfix爲臨時文件的前綴,suffix爲臨時文件的後綴,這種方法沒有指定目錄,則放在系統的臨時文件夾下
createTempFile( String perfix,String suffix,File directory );//perfix爲臨時文件的前綴,suffix爲臨時文件的後綴,directory 爲創建的臨時文件所在目錄
代碼:
import java.io.File;
import java.io.IOException;
public class Test {
/**
* 創建臨時文件
* @param prefix is 臨時文件的前綴
* @param suffix is 臨時文件的後綴
* @param directory is 臨時文件的目錄
*/
public static void createTempFile(String prefix,String suffix,String directory){
File file = new File(directory);//根據指定的文件名創建File對象
if ( !file.exists() ){ //要創建的文件目錄不存在,則創建目錄
System.out.println("目錄"+directory+"的不存在,正在創建" );
if ( file.mkdirs() )
System.out.println("目錄"+directory+"創建成功!" );
else
System.out.println("目錄"+directory+"創建失敗!" );
}
File tempfile = null;
try{
tempfile = File.createTempFile(prefix,suffix,file);//用指定目錄的方法創建臨時文件
System.out.println("成功創建了臨時文件"+tempfile );
}catch(IOException e){
e.printStackTrace();
System.out.println("創建臨時文件"+tempfile+"失敗:"+e.getMessage());
}
}
/**在指定目錄下創建臨時文件**/
public static void main(String[] args){
String fileName = "D:\\temp\\aa\\bb";//定義臨時文件的目錄
String prefix = "helloword";//定義臨時文件的前綴
String suffix =".docx";//定義臨時文件的後綴
Test.createTempFile(prefix, suffix, fileName);//調用創建臨時文件的方法
}
}
運行結果:
第一次運行結果:
目錄D:\temp\aa\bb的不存在,正在創建
目錄D:\temp\aa\bb創建成功!
成功創建了臨時文件D:\temp\aa\bb\helloword5628765651619708798.docx
大二次運行結果:
成功創建了臨時文件D:\temp\aa\bb\helloword3509223815028989368.docx
注:注意到創建的臨時文件多了一串隨機數字,那是系統自動添加的臨時編號,已達到文件名不重名的效果
臨時文件的作用(摘抄):
假設打水印過程中發生了異常,程序運行中斷,用戶上傳的文件已經被修改,但你沒有備份,無法還原,此時怎麼處理?
只能讓用戶再做一次選取文件的操作,這是一種相當差的用戶體驗。創建臨時文件就可以避免這種問題的發生,
當出現異常你可以提示用戶操作失敗,是否重試,甚至不提示用戶,直接自動重試,
重試的時候並不需要用戶再進行一次選取文件的操作,只是再備份一份用戶文件到臨時文件去