C#操作壓縮檔(rar,zip,gzip,winform/asp.net)

來源:互聯網
上載者:User

從.NET 2.0開始,微軟提供了一個 System.IO.Compression 的NameSpace,下含有 GZipStream 和 DeflateStream,都具有壓縮和解壓功能,但是,確不支援 ziprar等常用的壓縮檔。因為rar是有著作權的,不支援有情可原,但zip是開源的,也不支援就有點自私了(估計微軟是為了自己的cab格式)

對於 rar 格式,我們可以直接利用WinRAR提供的rar.exe/unrar.exe(此檔案在winrar的安裝目錄下,是一個console程式),這種情況,只能用於 winform 或者 在提權 的情況下,才能用於 asp.net ;

對於 zip 格式,我們這裡推薦是用原生的C#類庫,這種方式,可以適用於asp.net(要有目錄的寫入權限),我推薦大家使用開源免費的 SharpZipLib 。

對於 rar.exe 的解壓和壓縮,下面先給出它的 命令列格式對照表,便於瞭解:

rar命令列的使用方法:

rar <命令> -<開關 1> -<開關 N> <壓縮檔> <檔案...> <@列表檔案...> <解壓路徑\>

rar的命令列表:

 

rar 的開關列表:

rar使用的例子:

1、rar a file file.ext
如果file.rar不存在將建立file.rar檔案;如果file.rar壓縮包中已有file.ext,將更新壓縮包中的file.ext

2、rar a file d:\*.ext

將d盤下所有ext檔案(不包括自檔案夾)添加到壓縮包中

3、rar x Fonts *.ttf
從壓縮檔中解壓 *.ttf 字型檔到當前檔案夾

4、rar x Fonts *.ttf NewFonts\

從壓縮檔中解壓 *.ttf 字型檔到 NewFonts 目錄下

5、rar e -p密碼 test.rar

將有密碼test.rar檔案,解壓到當前檔案夾

C#調用rar.exe解壓一個rar檔案到系統的臨時目錄:
//取得系統臨時目錄string sysTempDir = Path.GetTempPath();//要解壓的檔案路徑,請自行設定string rarFilePath = @"d:\test.rar";//確定要解壓到的目錄,是系統臨時檔案夾下,與原壓縮檔同名的目錄裡string unrarDestPath = Path.Combine(sysTempDir,    Path.GetFileNameWithoutExtension(rarFilePath));//組合出需要shell的完整格式string shellArguments = string.Format("x -o+ \"{0}\" \"{1}\\\"",    rarFilePath, unrarDestPath);//用Process調用using (Process unrar = new Process()){    unrar.StartInfo.FileName = "rar.exe";    unrar.StartInfo.Arguments = shellArguments;    //隱藏rar本身的視窗    unrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;    unrar.Start();    //等待解壓完成    unrar.WaitForExit();    unrar.Close();}//統計解壓後的目錄和檔案數DirectoryInfo di = new DirectoryInfo(unrarDestPath);MessageBox.Show(string.Format("解壓完成,共解壓出:{0}個目錄,{1}個檔案",    di.GetDirectories().Length, di.GetFiles().Length));

例子代碼下載

原文:http://www.zu14.cn/2008/12/31/net_package/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.