我正在保存上传的文件,如下所示:
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:/ FileUpload 中上传一次文件相同的旧文件。在上面的功能中它将删除旧文件。示例第一次,我上传文件: test.doc (旧文件)。然后我上传另一个同名文件: test.doc (新文件)。在文件夹FileUpload将有一个文件是 test.doc (新文件)。我希望函数将在窗口OS中处理类似:新文件将是 test(2).doc 。我该如何处理它?所有情况: D:/ FileUpload 有多个文件: test.doc , test(1).doc , test(2 ).doc , test(a).doc ,......我想我们只是检查格式 ....(int).doc 。那个新文件将是: test(3).doc (忽略 test(a).doc )
答案 0 :(得分: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();