2015-10-20 77 views
2

在JDK7及更高版本中,有一个相对较新的zip filesystem provider是NIO2库的受支持部分。如果加密,从.zip文件创建一个java.nio.file.FileSystem?

我特别需要它来支持java.nio.file.FileSystem类。

它是否与加密的.zip文件兼容,如果是,您如何指定解密密钥?


非常相似,this other question但它在Android上;我不需要担心Android在我的情况,或支持任何现有的代码。

+0

我可以虚心推荐[Apache VFS](https://commons.apache.org/proper/commons-vfs/)软件包吗? – PaulProgrammer

+0

re:Apache VFS:它看起来很有趣,但我需要它来支持java.nio.file.Filesystem,它看起来像VFS没有;我猜Apache在NIO2之前做了他们自己的事情。 –

回答

2

如果特里结构安装你的错误加密的压缩文件:

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)。