【问题标题】:java created zip file with directory inside cannot unzip by winrarjava创建的带有目录的zip文件无法通过winrar解压缩
【发布时间】:2023-06-04 15:53:01
【问题描述】:

我使用 java zip 实用程序创建了一个 zip 文件,并且在该 zip 文件中具有以下目录结构。

  1. test.txt - 文件
  2. mylabel.lbl - 文件
  3. aux - 目录(在这个目录中我还有一些其他文件,如下所示)
    1. myfile.lbl
    2. firstfile.txt
String dir = "aux\\";
        Iterator<LabelFile> i = auxLabelFiles.iterator();
        while (i.hasNext()) {
            LabelFile labelFile = i.next();
            String lableFileName = labelFile.getMetadata().getLabelFileName();
            zipEncorder.addToZip(dir + lableFileName, labelFile.getMedia().getByteData());
        }

这是只有代码的 'aux' 目录,下载文件后可以用 7zip 打开并正确显示目录结构。

当我尝试使用 WinRAR 解压缩 zip 文件时,它会解压缩所有仅包含错误消息的外部目录文件。 'cannot create aux\myfile.lbl 系统找不到指定的路径'

我猜不出这是文件创建问题还是 WinRAR 问题。

欢迎评论。

谢谢, 迪尔。

【问题讨论】:

  • aux不是windows下的保留引用,比如null吗?
  • 没错.. 它解决了我的问题。我刚刚将名称更改为“辅助”并且现在工作正常。感谢您的帮助...

标签: java zip unzip winrar


【解决方案1】:

问题是 ZIP 存档中的目录 aux,因为 AUX 是一个保留名称,不能用作 Windows 上文件或目录的名称,请参阅 MSDN 文章 Naming Files, Paths, and Namespaces。因此,将目录重命名为 Auxiliary 之类的不同名称即可解决问题。

【讨论】: