atitit.java提取zip rar文件列表

1. 取zip rar文件的场景问题 1

1.1. 多重压缩的问题 1

1.2. 文件名编码的问题 1

1.3. 目录的判定 1

2. rar的解析 1

2.1. JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码(推荐)
2

2.2. mucommande 2

3. -------code 2

3.1. rrar  code  rarx 4

4. 参考 5

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# 的原理与设计的更多相关文章

  1. springMvc上传文件、读取zip/rar文件

    参考文章: http://www.cnblogs.com/interdrp/p/6734033.html 方法一: 1)没有配置org.springframework.web.multipart.co ...

  2. C# .NET 使用第三方类库DotNetZip解压/压缩Zip rar文件

    DotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...

  3. java上传图片到数据库,涉及压缩文件zip/rar上传等

    项目中有这个需求: 1)上传文件通过公司平台的校验,校验成功后,通过接口,返回文件流: 2)我们根据这个文件流进行操作.这里,先将文件流复制文件到项目临时目录WEB-INF/temp;文件使用完毕,删 ...

  4. atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表

    atitit.) ---数据挖掘 获取回收站文件列表 1. 放入回收站的原理and 1 2. info2文件文件结构 1 3. 获得文件列表2个法: 正则表达式or解析 1 4. 路径正则表达式[a- ...

  5. centos rar 文件打开办法

    http://hi.baidu.com/nmxiaoxin/item/7642a139918a95677d034b6a Centos下解压rar.zip文件的方法 ============zip文件的 ...

  6. Atitit.jsou html转换纯文本 java c# php

    Atitit.jsou html转换纯文本 java c# php 1. 原理<p> <h> <li><div> 等lable转换为回车1 2. 调用2 ...

  7. Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip ...

  8. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...

  9. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

随机推荐

  1. vs code 使用Git进行源代码管理

    第一步:用vs code 打开一个空文件夹,如本示例Demo2, 第二步:点击左侧第三个图标“源代码管理”,然后再点击初始化存储库按钮 初始化之后界面现变成下图所示: 此时文件夹中会新增一个隐藏文件夹 ...

  2. java通过UUID生成16位唯一订单号

    import java.util.UUID; public class T { public static String getOrderIdByUUId() { int machineId = 1; ...

  3. Android从开源到碎片化 开发者叛离的真相

    Android从诞生开始就受到热捧,并日益普及.它有别于以往的手机及移动终端操作系统,其独具的开源性.系统廉价性和提供给第三方大自由度的创新空间,以及不受硬件约束的优势,获得了广大开放社群的支持.但是 ...

  4. Android疑难杂症之android:configChanges="orientation" 无效

    通常情况下,当“屏幕方向”变化时会销毁并重建当前Activity.而我们有时候并不希望重新创建Activity实例,然后就会在AndroidManifest.xml中配置Activity: <a ...

  5. iOS:延时执行的三种方式

    延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器   第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObj ...

  6. Linux系统443端口被占用无法启动解决办法

    etstat -ano|findstr "443"         //搜索443端口占用情况,并找到进程IDTCP 0.0.0.0:443 0.0.0.0:0 LISTENING ...

  7. vmware虚拟机 C硬盘空间 无损扩容 新测

    摘自: http://hi.baidu.com/y276827893/item/78a351f427726549932af214 其实上面一步的话, 虚拟机设置 里选择磁盘,实用工具里也有这个功能的. ...

  8. 文本域光标操作(选、添、删、取)的jQuery扩展

    ; (function ($) { /* * 文本域光标操作(选.添.删.取)的jQuery扩展 @Mr.Think http://mrthink.net/text-field-jquery-exte ...

  9. [LeetCode][Java] Substring with Concatenation of All Words

    题目: You are given a string, s, and a list of words, words, that are all of the same length. Find all ...

  10. vi语法高亮,自动缩进(转)

    编辑.vimrc 这样文件在其中加入如下两行就可以了,此法对#号提示符下的操作无效. let &termencoding=&encodingset fileencodings=utf- ...