博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 代码解压7z(带密码)转载请注明出处,谢谢
阅读量:6464 次
发布时间:2019-06-23

本文共 3902 字,大约阅读时间需要 13 分钟。

pom.xml

4.0.0
demo
spring
1.0-SNAPSHOT
9.20-2.00beta
2.0.1
net.sf.sevenzipjbinding
sevenzipjbinding
${sevenzipjbinding.version}
net.sf.sevenzipjbinding
sevenzipjbinding-all-platforms
${sevenzipjbinding.version}
commons-io
commons-io
${commons.io.version}
View Code

 

package urar;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.File;import java.io.FileOutputStream;import java.io.RandomAccessFile;import java.util.Arrays;public class URaR {    /**     * @param file7zPath(7z文件路径)     * @param outPutPath(解压路径)     * @param passWord(文件密码.没有可随便写,或空)     * @return     * @throws Exception     * @Description (解压7z)     */    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 parentFilePath = outPutPath + File.separator + item.getPath().substring(0, item.getPath().lastIndexOf(File.separator));                            if (!new File(parentFilePath).exists()) {                                new File(parentFilePath).mkdirs();                            }                            IOUtils.write(data, new FileOutputStream(new File(outPutPath + File.separator + item.getPath()), true));                        } catch (Exception e) {                            e.printStackTrace();                        }                        hash[0] ^= Arrays.hashCode(data); // Consume data                        sizeArray[0] += data.length;                        return data.length; // Return amount of consumed                    }                }, passWord);                if (result == ExtractOperationResult.OK) {                    System.out.println(String.format("%9X | %10s | %s", hash[0], sizeArray[0], item.getPath()));                } else {                    System.out.printf("Error extracting item: " + result);                }            }        }        archive.close();        randomAccessFile.close();        return numberOfItems;    }    public static void main(String[] args) throws Exception {        un7z("C:\\Users\\spring\\Desktop\\A_(3169).rar", "d:\\111", "SPzfq");    }}
View Code

 

 解压

http://sevenzipjbind.sourceforge.net/compression_snippets.html

转载地址:http://krhzo.baihongyu.com/

你可能感兴趣的文章
python升级导致yum不可用 “ No module named yum”
查看>>
JJavaScript框架——什么是react
查看>>
深入了解passive-interface
查看>>
mac 部署python环境
查看>>
【Linux系统】部分基础命令手册
查看>>
dns配置和各种文件中注意的点
查看>>
定制预装软件的win10系统
查看>>
Centos7安装zabbix2.4并进行初始化配置
查看>>
用路由器模拟帧中继交换机配制
查看>>
前端04.js入门
查看>>
了解sqlplus中的copy命令
查看>>
JAVA面试题:String 堆内存和栈内存
查看>>
Vi 编辑器快速上手
查看>>
grep, sed 与 awk 详解
查看>>
在Linux系统如何让程序开机时自动启动
查看>>
利用ADOX修改ACCESS表字段名(VC/MFC)
查看>>
就地取材加密
查看>>
python 不用break改用return
查看>>
Linux下创建软RAID5和RAID10实战
查看>>
MYSQL数据库迁移到ORACLE数据库
查看>>