【发布时间】:2016-01-14 06:01:56
【问题描述】:
我们正在处理使用属性来检查 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(file, “dos:archive”, true)使用
File.copy()将与文件关联的文件属性复制到目标文件但没有成功。甚至现有属性也不会保留到目标文件中。Files.copy(path, path, StandardCopyOption.COPY_ATTRIBUTES)使用
ZipEntry.setExtra(byte[])。 在网上找到一些信息,java没有任何直接设置属性的方法,但根据一些在线文章,我们发现额外字段用于设置unix和MS DOS文件属性的文件权限。这是一个未记录的领域,我们在网上没有找到任何可靠的信息。基本上,最初的 2 个字节用于 unix,最后 2 个字节用于 DOS 文件属性。我们尝试在其中设置具有不同值的 DOS 文件属性。ZipEntry.setExtra(byte[])- 为条目设置可选的额外字段数据。使用 winzip 命令行工具,但不是一个优雅的解决方案。
【问题讨论】: