提交 13503a02 编写于 作者: zhouweidong's avatar zhouweidong

fixed:批量下载文件重名

上级 f3be8846
......@@ -93,11 +93,7 @@ public class ZipUtils {
if (file.isFile()) {
String fileId = DigestUtils.md5DigestAsHex(file.getName().getBytes());
if(zipFileMaps.containsKey(fileId)){
String prefix = zipFileName.contains(".")? zipFileName.substring(0,zipFileName.lastIndexOf(".")): null;
String suffix = zipFileName.contains(".")? zipFileName.substring(zipFileName.lastIndexOf(".")) : null;
zipFileName = String.format("%s(%s)%s",prefix,zipFileMaps.get(fileId).size(),suffix);
zipFileMaps.get(fileId).add(file);
log.debug(String.format("压缩文件中已存在重复文件名,文件[%s]被重命名为[%s]" , file.getAbsoluteFile(), zipFileName));
zipFileName = getFileName(file, zipFileName , zipFileMaps);
}
else{
zipFileMaps.put(fileId, new ArrayList(){{add(file);}});
......@@ -133,6 +129,33 @@ public class ZipUtils {
}
}
/**
* 获取文件名
* @param file 重名文件
* @param dupFileName 重复文件名
* @param zipFileMaps 压缩文件集合
* @return
*/
private static String getFileName(File file, String dupFileName, java.util.Map<String , List<File>> zipFileMaps){
String dupFileId = DigestUtils.md5DigestAsHex(dupFileName.getBytes());
String prefix = dupFileName.contains(".")? dupFileName.substring(0,dupFileName.lastIndexOf(".")): null;
String suffix = dupFileName.contains(".")? dupFileName.substring(dupFileName.lastIndexOf(".")) : null;
String fileName = String.format("%s(%s)%s",prefix,zipFileMaps.get(dupFileId).size(),suffix);
String fileId = DigestUtils.md5DigestAsHex(fileName.getBytes());
log.debug(String.format("压缩文件中已存在重复文件[%s],尝试将文件[%s]重命名为[%s]" , file.getAbsoluteFile(), dupFileName, fileName));
if(zipFileMaps.containsKey(fileId)){
fileName = getFileName(file , fileName , zipFileMaps);
}
else{
zipFileMaps.put(fileId,new ArrayList(){{add(file);}});
}
return fileName;
}
public static void unzip(File zipFile, File dstFolder) throws IOException {
if (!dstFolder.exists()) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册