代码源地址:http://sourceforge.net/p/sevenzipjbind/discussion/757964/thread/b64a36fb
支持压缩格式:- 7z, Zip, Tar, Rar, Lzma, Iso, GZip, Cpio, BZIP2, Z, Arj, Lzh, Cab, Chm, Nsis, DEB, RPM, UDF, WIM
代码如下:
package com.neusoft; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.util.logging.Logger; import net.sf.sevenzipjbinding.ExtractAskMode; import net.sf.sevenzipjbinding.ExtractOperationResult; import net.sf.sevenzipjbinding.IArchiveExtractCallback; import net.sf.sevenzipjbinding.ISequentialOutStream; import net.sf.sevenzipjbinding.ISevenZipInArchive; import net.sf.sevenzipjbinding.PropID; import net.sf.sevenzipjbinding.SevenZip; import net.sf.sevenzipjbinding.SevenZipException; import net.sf.sevenzipjbinding.impl.RandomAccessFileInStream; /** * <p>Description: [压缩文件工具包]</p> * @author <a href="mailto: li.bb@xxx.com">李彬彬</a> * @version $Revision$ */ public class ZipTools { private static Logger logger = Logger.getLogger(ZipTools.class.getCanonicalName()); /** * <p>Discription:[将解压文件解压到指定目录下]</p> * @param file 文件全路径 * @param extractPath 解压后文件存往路径 -支持压缩格式: 7Z,ZIP,TAR,RAR,LZMA,ISO,GZIP,BZIP2,CPIO,Z,ARJ,LZH,CAB,CHM,NSIS,DEB,RPM,UDF,WIM * @throws SevenZipException * @throws IOException * @author:[李彬彬] * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public void extract(String file, String extractPath) throws SevenZipException, IOException { ISevenZipInArchive inArchive = null; RandomAccessFile randomAccessFile = null; try { randomAccessFile = new RandomAccessFile(new File(file), "r"); inArchive = SevenZip.openInArchive(null, new RandomAccessFileInStream(randomAccessFile)); inArchive.extract(null, false, new ExtractCallback(inArchive, extractPath)); } finally { if (inArchive != null) { inArchive.close(); } if (randomAccessFile != null) { randomAccessFile.close(); } } } /** * <p>Description: [提后文件后回调方法]</p> * @author <a href="mailto: li.bb@neusoft.com">李彬彬</a> * @version $Revision$ */ private class ExtractCallback implements IArchiveExtractCallback { private final ISevenZipInArchive inArchive; private final String extractPath; public ExtractCallback(ISevenZipInArchive inArchive, String extractPath) { this.inArchive = inArchive; if (!extractPath.endsWith("/") && !extractPath.endsWith("\\")) { extractPath += File.separator; } this.extractPath = extractPath; } @Override public ISequentialOutStream getStream(final int index, ExtractAskMode extractAskMode) throws SevenZipException { return new ISequentialOutStream() { @Override public int write(byte[] data) throws SevenZipException { String filePath = inArchive.getStringProperty(index, PropID.PATH); FileOutputStream fos = null; try { File path = new File(extractPath + filePath); if (!path.getParentFile().exists()) { path.getParentFile().mkdirs(); } if (!path.exists()) { path.createNewFile(); } fos = new FileOutputStream(path, true); fos.write(data); } catch (IOException e) { logger.log(null, "IOException while extracting " + filePath); } finally { try { if (fos != null) { fos.flush(); fos.close(); } } catch (IOException e) { logger.log(null, "Could not close FileOutputStream", e); } } return data.length; } }; } @Override public void setCompleted(long arg0) throws SevenZipException { } @Override public void setTotal(long arg0) throws SevenZipException { } @Override public void prepareOperation(ExtractAskMode arg0) throws SevenZipException { } @Override public void setOperationResult(ExtractOperationResult arg0) throws SevenZipException { } } }
相关推荐
楼上兄弟太黑,特意找的源码,2分处理,完美解决Java加密解密zip文件
摘要:Java源码,文件操作,提取文件 Java从压缩包中提取文件,可借机学习一下文件选择按钮事件处理,弹出文件选择器,并判断是否点击了打开按钮,得到选择文件的绝对路径,得到压缩条目的枚举对象,依次枚举条目,设置...
Java核心知识点总结:这些文档整理了Java编程语言的核心概念和重要知识点,如面向对象编程、异常处理、输入输出、反射等。通过学习这些知识点,您可以加深对Java语言的理解,为面试时的技术问题做好准备。 面试经验...
Java生成、修改文件夹和文件名,Java创建目录或文件夹,并修改、删除、重命名文件夹或文件名称,使用进行的文件操作实例。 super("目录和文件的创建、删除和更名"); //调用父类构造函数 jtfPath=new ...
java的中文api文档,是java编程的一份非常不错的api资料,因为上传大小的限制,我压缩成了两个压缩包,两个下载后,一块解压即可
Java API是指JDK内部自带的用Java语言书写的类库集合,包括基本数据类型处理,I/O处理,工具函数等等。Java API是以Java包和类的形式组织的,由Oracle官方负责维护,每个不同的Java版本都有自己的API,这个适合你!
java压缩包解压及中文文件名乱码处理,对应jar包和测试代码
java处理小程序授权和app微信授权,以及解析小程序传的encryptedData参数和移动端获取用户信息的处理,压缩包里面包含controller类,解析工具类,配置文件,亲测有效。
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
此demo是用于java HttpURLConnection跨域传送图片文件和图片,模拟火狐浏览器,对zip文件进行解压,对图片进行加logo 水印,缩略等处理。其中系统兼容性需要进一步完善,急需要积分,所以先分享了。 ...
java 处理图片大小等比例缩放;图片裁剪;支持图片压缩不失真;支持图片添加水印;支持动态图的处理;支持自定义图片大小的转换 等 压缩包中内附使用说明
一个文本编辑器程序,用JAVA代码编写实现,貌似在各种编程语言中,初学者都会以记事本为原型,仿写出一些字符编辑文字处理小程序,通过编写这种小程序,可学习到字符的处理技巧,本源码也不例外,因此对于Java初学者...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
zip4j实现单个文件或多个文件的压缩、加密压缩、解密压缩包等, 用于实现java处理zip压缩包
/** * 根据 策划的配置表来生成 json * excel 目前使用的版本为2007,其他版本未测试, * excel 格式 定义 ... * 二进制的方式,一般用于 后台管理界面 的文件上传后的处理。 * @author wgq * */
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
本压缩包内为,Java处理Excel文档需要POI依赖的完整jar包,包括生成后缀名为xlsx和xls!
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...