Java:`A`以编程方式创建zip时缺少存档属性

Java:`A`以编程方式创建zip时缺少存档属性,java,zip,zipfile,7zip,Java,Zip,Zipfile,7zip,我们正在处理解压缩库/实用程序,它使用属性检查zip中是否存在目录/文件 问题是,我们无法在创建时为zip设置存档位。当我们以编程方式创建zip时,它也会清除以前的属性 我们将尝试使用下面提到的步骤设置存档位,但到目前为止还没有得到预期的结果: 1. Parse each zip entry and getExtra byte[]. 2. Use Int value=32 and perform bitwise 'OR' operation. 3. setExtra byte[] after '

我们正在处理解压缩库/实用程序,它使用属性检查zip中是否存在目录/文件

问题是,我们无法在创建时为zip设置存档位。当我们以编程方式创建zip时,它也会清除以前的属性

我们将尝试使用下面提到的步骤设置存档位,但到目前为止还没有得到预期的结果:

1. Parse each zip entry and getExtra byte[].
2. Use Int value=32 and perform bitwise 'OR' operation.
3. setExtra byte[] after 'OR' operation.
添加更多详细信息: 我们尝试了以下方法,但这个问题仍然没有解决

  • 在文件系统上使用
    setAttribute()
    方法,但在创建zip时,获取属性会被重置。
    Files.setAttribute(文件“dos:archive”,true)

  • 使用
    File.copy()
    将与文件关联的文件属性复制到目标文件,但未成功。即使现有属性也不会保留到目标文件中。
    Files.copy(路径、路径、StandardCopyOption.copy\u属性)

  • 使用
    ZipEntry.setExtra(字节[])
    。 在线发现一些信息,java没有任何直接方法来设置属性,但根据一些在线文章,我们发现额外的字段用于设置unix和MS DOS文件属性上的文件权限。这是一个未记录的字段,我们在网上没有找到任何可靠的信息。基本上,最初的2个字节用于unix,最后的2个字节用于DOS文件属性。我们尝试用不同的值设置DOS文件属性。
    ZipEntry.setExtra(字节[])
    -为条目设置可选的额外字段数据

  • 使用winzip命令行工具,但不是一个优雅的解决方案

  • 我想是DOS(Windows)

    使用Java7

    import java.nio.file.Files;
    import java.nio.file.Path;
    
    File theFile = new File("yourfile.zip");
    Path file = theFile.toPath();
    Files.setAttribute(file, "dos:archive", true);
    

    请参阅:

    我们已经尝试过这个方法,但没有成功。setAttribue()在文件系统上工作,但在创建zip时,zip实用程序会清除属性标志。需要输入如何在zip系统上设置存档/额外属性。问题是在创建zip时,文件属性被重置。我不明白。此功能是否在您的系统上工作?1它独立于zip。2,您必须在创建zip文件后执行此操作(之后=所有内容都已关闭)。如果它不起作用,那么OS(不可写目录?)还有另一个问题。