java 在windows环境 android环境 linux环境对7z包的解压缩
来源:互联网 发布:轻便婴儿车推荐 知乎 编辑:程序博客网 时间:2024/06/06 00:36
1.7z的官网 https://sourceforge.net/projects/sevenzipjbind/ 提供有关java的SDK
2.WINDOWS环境添加jar包为:
sevenzipjbinding-AllWindows.jar
sevenzipjbinding.jar
3.以带密码解压7z包为例,代码如下
package main;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Arrays;import net.sf.sevenzipjbinding.ArchiveFormat;import net.sf.sevenzipjbinding.ExtractOperationResult;import net.sf.sevenzipjbinding.IInArchive;import net.sf.sevenzipjbinding.ISequentialOutStream;import net.sf.sevenzipjbinding.SevenZip;import net.sf.sevenzipjbinding.SevenZipException;import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream;import net.sf.sevenzipjbinding.simple.ISimpleInArchive;import net.sf.sevenzipjbinding.simple.ISimpleInArchiveItem;public class UnZip {/** * @param filepath * @param distpath */void extractile(String filepath,final String distpath) {RandomAccessFile randomAccessFile = null;IInArchive inArchive = null;try {randomAccessFile = new RandomAccessFile(filepath, "rw");inArchive = SevenZip.openInArchive(ArchiveFormat.SEVEN_ZIP, // autodetect archive typenew RandomAccessFileInStream(randomAccessFile));ISimpleInArchive simpleInArchive = inArchive.getSimpleInterface();for (final ISimpleInArchiveItem item : simpleInArchive.getArchiveItems()) {if (!item.isFolder()) {ExtractOperationResult result;final long[] sizeArray = new long[1];result = item.extractSlow(new ISequentialOutStream() {public int write(byte[] data) throws SevenZipException {// Write to fileFileOutputStream fos;try {System.out.println(distpath+"=="+item.getPath());File file = new File(distpath+item.getPath());File parentFile = file.getParentFile();if(!parentFile.exists()){parentFile.mkdirs();}fos = new FileOutputStream(file);fos.write(data);fos.close();} catch (Exception e) {e.printStackTrace();}sizeArray[0] += data.length;return data.length;}},"MbEdTXM4");if (result == ExtractOperationResult.OK) {System.out.println(item.getPath());} else {System.err.println("Error extracting item: " + result);}}}} catch (Exception e) {System.err.println("Error occurs: " + e);e.printStackTrace();System.exit(1);} finally {if (inArchive != null) {try {inArchive.close();} catch (SevenZipException e) {System.err.println("Error closing archive: " + e);}}if (randomAccessFile != null) {try {randomAccessFile.close();} catch (IOException e) {System.err.println("Error closing file: " + e);}}}}public static void main(String[] args) {UnZip unzip = new UnZip();//unzip.extractile("H:/1884fa85aedc4eb4a84ff03f99adbb9c/index.html.7z","H:/");long startTime = System.currentTimeMillis();unzip.extractile("H:/1884fa85aedc4eb4a84ff03f99adbb9c/rt5ctrNews.swf.7z","H:/1884fa85aedc4eb4a84ff03f99adbb9c/");/*unzip.extractile("/root/1884fa85aedc4eb4a84ff03f99adbb9c/rt5ctrNews.swf.7z","/root/1884fa85aedc4eb4a84ff03f99adbb9c/");*/long endTime = System.currentTimeMillis();System.out.println((endTime - startTime)/1000);}}
linux没有环境测试,android从官网下载包进行测试,发现不可以了,官方留言说暂时不支持andorid环境!!!
0 0
- java 在windows环境 android环境 linux环境对7z包的解压缩
- [Z]如何在Linux下配置Java开发环境详述
- 在windows 环境中搭建linux的学习环境!!!(对新手很重要)
- 安装Java在Windows和Linux下的开发环境
- openfire在windows环境和linux环境下的配置
- java在windows环境下的配置
- Linux使用Windows环境的Android SDK
- ffmpeg 0.8.7在windows环境mingw环境的编译
- android 环境搭建 windows, linux
- factoryfs.img在Windows环境下的解包
- Linux上配置java环境、android的SDK环境
- 在Linux下的Java环境设置
- 在Linux下的Java环境设置
- 在树莓派中Linux环境下rpm包的安装
- 深入体验bash on windows!在windows上搭建原生的linux开发环境环境
- Android 环境的搭建 [Windows 7]
- android windows的环境配置
- 在Windows环境下搭建Android 2.0 开发环境
- 让Category支持添加属性与成员变量
- spring profile
- Codeforces Round #361 (Div. 2) 题解
- Hibernate\Struts2\Spring
- SVM基本思想及应用
- java 在windows环境 android环境 linux环境对7z包的解压缩
- php保留小数
- AndroidStudio中如何获取SHA1
- iOS加载Gif图片的N种方式
- 9.View the Exhibit and examine the privileges granted to the SL_REP user.
- 操作快捷键
- __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev)
- 父视图透明度为零 不影响子视图; TableView的 cell.contentView 透明;
- <LeetCode> 题5:第k大元素