我们正在处理解压缩库/实用程序,它使用属性来检查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命令行工具,但不是优雅的解决方案。
答案 0 :(得分:1)
我认为它是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/