最近用java解压7zip压缩文件,程序在Windows运行良好,在Linux服务器上解压却出现问题,将代码中SevenZip.openInArchive(null,t)的null替换为ArchiveFormat.ZIP,问题得到解决。
首先讲一下该位置参数的作用,该参数为指定所解压文件的类型,如果传入的参数为null则通过调用native方法nativeOpenArchive(null, inStream, archiveOpenCallback)返回一个IInArchive,这在Windows平台下没有问题,但是在Linux中由于默认的类型不是zip格式,则解压失败,所以这里需要指定一下索要解压文件的类型,其中ArchiveFormat为枚举类。下面已在Linux和Windows成功运行:
第一步、maven中引入的jar包如下:
<dependency>
<groupId>net.sf.sevenzipjbinding</groupId>
<artifactId>sevenzipjbinding</artifactId>
<version>9.20-2.00beta</version>
</dependency>
<dependency>
<groupId>net.sf.sevenzipjbinding</groupId>
<artifactId>sevenzipjbinding-all-platforms</artifactId>
<version>9.20-2.00beta</version>
</dependency>
第二步、解压代码如下: