依赖的jar包,除了如下的pom依赖还额外依赖java-unrar-0.5.0.jar,其他地方下载后本地添加,地址http://maven.aliyun.com/mvn/search
7z解压:
package tools;
import net.sf.sevenzipjbinding.*;
import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;
import net.sf.sevenzipjbinding.simple.ISimpleInArchive;
import net.sf.sevenzipjbinding.simple.ISimpleInArchiveItem;
import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.Arrays;
public class SevenZUtils {
/**
*
* @Description (解压7z)
* @param file7zPath(7z文件路径)
* @param outPutPath(解压路径)
* @param passWord(文件密码.没有可随便写,或空)
* @return
* @throws Exception
*/
public static int un7z(String file7zPath, final String outPutPath, String passWord) throws Exception {
IInArchive archive;
RandomAccessFile randomAccessFile;
randomAccessFile = new RandomAccessFile(file7zPath, "r");
archive = SevenZip.openInArchive(null, new RandomAccessFileInStream(randomAccessFile), passWord);
int numberOfItems = archive.getNumberOfItems();
ISimpleInArchive simpleInArchive = archive.getSimpleInterface();
for (final ISimpleInArchiveItem item : simpleInArchive.getArchiveItems()) {
final int[] hash = new int[] { 0 };
if (!item.isFolder()) {
ExtractOperationResult result;
final long[] sizeArray = new long[1];
result = item.extractSlow(new ISequentialOutStream() {
public int write(byte[] data) throws SevenZipException {
try {
String str = item.getPath();
str = str.substring(0, str.lastIndexOf(File.separator));
File file = new File(outPutPath + File.separator + str + File.separator);
if (!file.exists()) {
file.mkdirs();
}
File file1 = new File(outPutPath + File.separator + item.getPath());
IOUtils.write(data, new FileOutputStream(file1, true));
} catch (Exception