atitit.提取zip rar文件列表 java php c# 的原理与设计
atitit.java提取zip rar文件列表
2.1. JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码(推荐)
2
1. 取zip rar文件的场景问题
1.1. 多重压缩的问题
为了获取一个压缩包中的文件,而该压缩包里可能又含有压缩包 、文件夹、文件夹里又包含压缩包、文件等各种嵌套的情况,采用广度优先遍历和深度优先遍历的方法解决了此问题。
多重压缩包的获取压缩包内的文件列表。。如果是二级子压缩包,则需要解压到临时目录,然后单层获取。。不能直接获取子压缩包目录。
1.2. 文件名编码的问题
jdk的有编码问题。使用apache的包,使用gbk编码就可。。
1.3. 目录的判定
目录,也与子文件处于同一同级了。直接next即可。。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. rar的解析
用java怎么提取或是解压rar压缩文档?以前查了很多的资料,没有找到相关的第三方库,网上查找的资料说是解析rar只能更加rar的命令行参数来解析。因为rar压缩文档的内部结构是没有共开的。所以没有专门的解析库程序。自己也就只好用命令行了,但是在实际应用中,遇到rar加密时就遇到了问题。
所以自己又在网上很费心的找了相关资料,终于找到了一个库可以解析rar文档。
库下载地址:http://www.mucommander.com/。这是个解决多种文档的软件,是用java写的。所以能够引用来解决rar的解析。
mucommander9 三吗内五六个个api了。。8MuCommander-v0.82.rar 三。少了俩个package。。嫩欣赏几个pkg了。官网上的不好下载。直接下载,可是个独立的软件,到时好西藏质量。。。giveup
2.1. JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码(推荐)
有个项目需要解压rar,上网搜索一下大家都在用 java-unrar-0.3.jar ,于是写了一个util方法解压rar
2.2. mucommande
3. -------code
prj。atibrow。zipx
/**
* @param args
*/
public static void main(String[] args) {
try {
final String zipFileName = "E:\\00\\product3.zip";
readZipFile(zipFileName, "gbk", new Closure2() {
@Override
public Object execute(Object arg0) {
System.out.println("unziping " +zipFileName+"/"+arg0);
return null;
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
unziping E:\00\product3.zip/product3/product.sql
unziping E:\00\product3.zip/product3/proxy2.zip
unziping E:\00\product3.zip/product3/dir2/导出 - 全部词条 ati pc in com.rar
public static void readZipFile(String zipFileName, String encode,
Closure2 clos) {
// = "utf-8";
String path = new File(zipFileName).getParent();
org.apache.tools.zip.ZipFile zipFile = null;
try {
zipFile = new ZipFile(zipFileName, encode);// , encode
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// new org.apache.tools.zip.ZipFile(zipFileName);
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
String zipFileName2 = zipEntry.getName();
//path_now=zipFileName2;
if(zipEntry.isDirectory())
{
continue;
}
clos.execute(zipFileName2);
}
}
3.1. rrar code rarx
prj。atibrow。rarx
*/
public class RarX {
public static void main(String[] args) throws Exception {
unrar("E:\\down\\51vpn.rar", new Closure2() {
@Override
public Object execute(Object arg0) {
System.out.println(arg0);
return null;
}
});
}
/**
* } 解压rar格式压缩包。
* 对应的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又会用到commons-logging-1.1.1.jar
*/
private static void unrar(String sourceRar, Closure2 cls) {
Archive a = null;
FileOutputStream fos = null;
try {
a = new Archive(new File(sourceRar));
} catch (RarException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
FileHeader fh = a.nextFileHeader();
while (fh != null) {
if (!fh.isDirectory()) {
cls.execute(fh.getFileNameString());
}
fh = a.nextFileHeader();
}
try {
a.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
a = null;
}
}
4. 参考
java怎么读取Zip和RAR里面的文件啊?_百度知道.htm
java获取递归获取嵌套压缩包(zip和rar)中的所有文件-Java-第七城市.htm
java提取rar文档中的文本数据 - wqjsir的专栏 - 博客频道 - CSDN.NET.htm
atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php - attilax的专栏 - 博客频道 - CSDN.NET.htm
Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php - attilax的专栏 - 博客频道 - CSDN.NET.htm
atitit.提取zip rar文件列表 java php c# 的原理与设计的更多相关文章
- springMvc上传文件、读取zip/rar文件
参考文章: http://www.cnblogs.com/interdrp/p/6734033.html 方法一: 1)没有配置org.springframework.web.multipart.co ...
- C# .NET 使用第三方类库DotNetZip解压/压缩Zip rar文件
DotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...
- java上传图片到数据库,涉及压缩文件zip/rar上传等
项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...
- atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表
atitit.) ---数据挖掘 获取回收站文件列表 1. 放入回收站的原理and 1 2. info2文件文件结构 1 3. 获得文件列表2个法: 正则表达式or解析 1 4. 路径正则表达式[a- ...
- centos rar 文件打开办法
http://hi.baidu.com/nmxiaoxin/item/7642a139918a95677d034b6a Centos下解压rar.zip文件的方法 ============zip文件的 ...
- Atitit.jsou html转换纯文本 java c# php
Atitit.jsou html转换纯文本 java c# php 1. 原理<p> <h> <li><div> 等lable转换为回车1 2. 调用2 ...
- Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...
- Java实现对zip和rar文件的解压缩
通过java实现对zip和rar文件的解压缩
随机推荐
- .net 程式進階除錯教學 - 使用WinDbg
https://caryhsu.blogspot.com/2011/11/net-windbg.html 從以前一直研究基金方面的資訊,但由於沒有多於的時間常常觀看,再加上碩士時在我 ...
- SynDBOracle.pas
SynDBOracle.pas 通过OCI.DLL访问ORACLE数据库,是最快的访问方式,比任何其它数据库引擎访问ORACLE速度都要快. 程序发布的时候,只需要将OCI.DLL一同发布即可,而不需 ...
- Unity3D 手游开发中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Edi ...
- 工作中常用Lixu命令学习笔记
对于Linux,我是菜鸟,也是在工作中了才开始慢慢接触,用Linux的人都我都会觉得屌屌的,现在把工作中常用的一些Linux命令记录一下,供以后学习和参考. cd 这可能是我觉得Linux最简单的一个 ...
- Hive 内建操作符与函数开发——深入浅出学Hive
第一部分:关系运算 Hive支持的关系运算符 •常见的关系运算符 •等值比较: = •不等值比较: <> •小于比较: < •小于等于比较: <= •大于比较: > •大 ...
- 16、Xtrabackup备份与恢复
XTRABACKUP xtrabackup是percona公司开发的第三方备份软件,只备份innodb引擎表的ibd文件(frm不备份),不备份myisam引擎表.备份性能很高,备份期间没有任和锁,d ...
- java界面编程(3) ------ 控制布局
本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在java 中,组件放置在窗口上的方式可能与其它的GUI系统都不同样.首先,它全 ...
- css Table布局:基于display:table的CSS布局
两种类型的表格布局 你有两种方式使用表格布局 -HTML Table(<table>标签)和CSS Table(display:table 等相关属性). HTML Table是指使用原生 ...
- 强大实用的jQuery幻灯片插件Owl Carousel
演 示 下 载 简介 Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及 ...
- 30个iPhone健康应用帮助你保持身体健康
来源:GBin1.com 技 术进步的最大缺陷是,现在大部分人花费大量时间在他们的电脑前和移动设备上.他们没有任何时间锻炼和顾及他们的健康.这些科技产品让我们变得慵 懒,甚至 让我们愿意花费闲暇的时间 ...