当前位置: 首页 > 知识库问答 >
问题:

抛出异常"重复条目"java.util.zip.ZipExc农田

岳允晨
2023-03-14

我有一个程序,可以从远程服务器下载一堆文档,然后把它们打包成一个文件夹。使用ZipOutStream压缩文件。

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

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

请建议。。。

共有2个答案

胡云瀚
2023-03-14

通过将添加的每个文件名添加到有效的数据结构(如HashSet)中,并检查名称是否已经存在,可以实现这一点。add方法,如果元素不在集中,则返回true,否则返回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);
     } 
}

经和歌
2023-03-14

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

 类似资料:
  • 我有以下代码行: 我想使用: 但我有编译时异常。

  • 问题内容: 我如何捕获此异常: 问题答案: 我用弹簧,所以我们通过 但是就像@KevinGuancheDarias提到的那样: 请注意,虽然这可行。 我建议通过在save之前发出findBy来解决该问题 ,因为这很麻烦,我认为不保证它将在将来的版本中使用,甚至可能在没有通知的情况下中断。

  • 如何捕获此异常:

  • 这是我连接HTTP的代码。 这就是android。操作系统。NetworkOnMainThreadException 请帮忙。

  • 你怎么捕获一个异常,之后在另外一个线程上重新抛出?使用在标准文档18.8.5中描述的异常传递中的方法吧,那将显示标准库的魔力。 exception_ptr current_exception(); 返回一个exception_ptr 变量,它将指向现在正在处理的异常(15.3)或者现在正在处理的异常的副本(拷贝),或者有的时候在当前没有遇到异常的时候,返回值为一个空的exception_ptr变量

  • 首先,下面的代码片段是Google云项目应用程序的一部分,在我的本地客户机Raspberry Pi 1上运行。为了能够从连接到Pi的传感器向云发送数据,需要授权。所有需要的客户端机密都存储在src/main/resources中的“client_secrets.json”中。 项目层次结构 当试图使用客户端机密来授权时,下面的代码抛出一个NullPointerException。它是类“CmdLi