有一个相对较新的zip filesystem provider,它是JDK7及以上版本的NIO2库的受支持部分。
我特别需要它来支持java.nio.file.FileSystem类。
它是否与加密的.zip文件兼容?如果是,那么如何指定解密密钥?
与this other question非常相似,但它在Android上;在我的情况下,我不需要担心Android,或者支持任何现有的代码。
答案 0 :(得分:2)
如果您想安装加密的zip文件,则会收到错误消息:
Exception in thread "main" java.util.zip.ZipError: invalid CEN header (encrypted entry)
at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1064)
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:390)
引起的行是
if ((ZipConstants.CENFLG(arrayOfByte1, i) & 0x1) != 0)
zerror("invalid CEN header (encrypted entry)");
因此,每个加密条目都会抛出异常。因此,ZipFileSystem目前不支持加密文件(Java 8)。