抛出异常"重复输入" java.util.zip.ZipException

时间:2014-08-25 09:23:15

标签: java collections collision-detection

我有一个程序从远程服务器下载一堆文件,然后使用ZipOutputStream将它们捆绑在.zip文件中。

问题是,当我下载文件时,可能有多个文件具有相同的文件名。因此,当我尝试将一个具有相同文件名的条目放在ZipOutputStream中时,它将抛出异常“重复条目”。

在将zip条目添加到ZipOutputStream之前,有没有办法,我可以检查重复条目?所以我可以重命名重复的文件?

请告知......

2 个答案:

答案 0 :(得分:1)

您可以通过将添加的每个文件名添加到有效的数据结构(例如HashSet)并检查名称是否已存在来实现。 add方法,如果该元素不在true中,则返回Set,否则返回false

Set<String> addedNames = new HashSet<String>();
// Start processing of the file set
for (String fileName : fileNames) { 
     if (addedNames.add(fileName) { 
          // Process file
     }
     else { 
         throw new DuplicateException(fileName);
     } 
}

答案 1 :(得分:1)

为什么不在排序的数组/ map / hash中注册所有文件名,并在添加新文件之前检查所有文件名?