有一个相对较新的zip filesystem provider这是 JDK7 及更高版本中 NIO2 库受支持的部分。
我特别需要它来支持 java.nio.file.FileSystem类。
它是否与加密的 .zip 文件兼容?如果兼容,如何指定解密 key ?
与 this other question 非常相似但它是在 Android 上;就我而言,我不需要担心 Android,也不需要支持任何现有代码。
最佳答案
如果您尝试挂载加密的 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)。
关于java - 如果加密,从 .zip 文件创建 java.nio.file.FileSystem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239852/