ITKeyword,专注技术干货聚合推荐

注册 | 登录

atitit.提取zip rar文件列表 java php c# 的原理与设计

attilax 分享于 2015-08-08

推荐:atitit. 文件上传带进度条 atiUP 设计 java c# php

atitit. 文件上传带进度条 atiUP 设计 java c# php   1. 设计要求 1 2. 原理and 架构 1 3. ui 2 4. spring mvc 2 5. springMVC.xml 3 6. struts extand url 3 7.

2020腾讯云7月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

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();

}

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

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

// 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.ati dwr的原理and设计 attilax 总结 java php 版本

Atitit.ati dwr的原理and设计 attilax 总结 java php 版本     1. dwr的优点相对于ajax来说。。 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自定义dwr还是native dwr

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 解压ra

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。