gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:40:21 24 4
gpt4 key购买 nike

我们正在处理解压缩库/实用程序,它使用属性来检查 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.

添加更多详细信息:我们尝试了以下方法,但这个问题仍然没有解决。

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

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

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

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

最佳答案

我假设它是 DOS (Windows)

使用 Java 7

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);

参见:http://kodejava.org/how-do-i-set-the-value-of-file-attributes/

关于Java: `A` 以编程方式创建 zip 时缺少存档属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34782653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com