我有一个程序从远程服务器下载一堆文件,然后使用ZipOutputStream将它们捆绑在.zip文件中。
问题是,当我下载文件时,可能有多个文件具有相同的文件名。因此,当我尝试将一个具有相同文件名的条目放在ZipOutputStream中时,它将抛出异常“重复条目”。
在将zip条目添加到ZipOutputStream之前,有没有办法,我可以检查重复条目?所以我可以重命名重复的文件?
请告知......
答案 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中注册所有文件名,并在添加新文件之前检查所有文件名?