2015-01-12 40 views
-1

我節省如下上傳文件的:後綴添加到文件名,如果文件已經存在,而不是覆蓋它

UploadItem item = event.getUploadItem(); 
File dir = new File("D:/FileUpload"); 
if (!dir.exists()) { 
    dir.mkdir(); 
} 
File bfile = new File("D:/FileUpload" + "/" + item.getFileName()); 
OutputStream outStream = new FileOutputStream(bfile); 
outStream.write(item.getData()); 
outStream.close(); 

但我的問題是,當上傳文件後老文件夾d:/文件上傳。在上面的功能中它會刪除舊文件。例如第一次,我上傳文件:test.doc(舊文件)。然後我上傳另一個同名文件:test.doc(新文件)。在文件夾FileUpload將有一個文件是test.doc(新文件)。我想要的功能會在窗口中處理類似的操作系統是:新文件將是測試(2).doc。我如何處理它?和所有情況:d:/文件上傳有很多文件:Test.doc的測試(1).DOC測試(2).DOC測試(一).DOC,... ...我想我們只需檢查格式....(int).doc。這個新的文件將是: 測試(3).DOC(忽略測試(一).DOC

回答

0

也許您正在尋找這樣的事情?我列出目錄中的文件,將每個文件的名稱與文件名稱進行比較。如果名稱匹配,則增加一個計數。然後,當你來創建你的文件時,請在其名稱中包含計數。

UploadItem item = event.getUploadItem(); 
File dir = new File("D:/FileUpload"); 
if (!dir.exists()) { 
    dir.mkdir(); 
} 
String [] files = dir.list(); 
int count = 0; 

for(String file : files) { 
    if (file.startsWith(item.getFileName()) { 
    count++; 
    } 
} 

File bfile = new File("D:/FileUpload" + "/" + item.getFileName() + "(" + count + ")"); 
OutputStream outStream = new FileOutputStream(bfile); 
outStream.write(item.getData()); 
outStream.close(); 
相關問題