我们正在处理解压缩库/实用程序,它使用属性来检查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[])
- 为条目设置可选的额外字段数据。我假设它是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/