atitit.提取zip rar檔案清單 java php c# 的原理與設計

來源:互聯網
上載者:User

標籤:

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:[email protected]

轉載請註明來源: 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# 的原理與設計

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.