網頁 貼吧 文章 作者 工作  
網頁搜尋
 
 愛PO吧 >> 史萊姆好玩遊戲 >> 瀏覽文章
回覆 加入我的最愛 與好友分享

C#, 處理 ZIP 壓縮檔

本被文章 0 次, 共有回覆 2  
0
 
0
C# 本身並無提供ZIP相關的類別,我們可使用 SharpZipLib 這個類別庫來處理壓縮檔,有需要可到 SharpZipLib 官方網站下載
http://www.icsharpcode.net/OpenSource/SharpZipLib/ 如下的 Method,可以將一個資料夾內所有的檔案壓縮成一 .ZIP 檔: // 傳入參數: 來源路徑, 目的壓縮檔名(.zip), 壓縮比( 0=僅儲存, 9=最高壓縮比 )
public static void Compress(string dir, string zipFileName, int level)
{
string[] filenames = Directory.GetFiles(dir);
byte[] buffer = new byte[4096]; using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFileName)))
{
// 設定壓縮比
s.SetLevel(level); // 逐一將資料夾內的檔案抓出來壓縮,並寫入至目的亞洲連續劇DVD檔(.ZIP)
foreach (string filename in filenames)
{
ZipEntry entry = new ZipEntry(filename);
s.PutNextEntry(entry); using (FileStream fs = File.OpenRead(filename))
StreamUtils.Copy(fs, s, buffer);
}
}
} 呼叫 Compress ,將 C:\851_ICSharpCode.SharpZipLib_20 資料夾下所有的檔案壓縮成 test.zip,壓縮比 5
Compress("C:\\0851_ICSharpCode.SharpZipLib_20", "C:\\Downloads\\test.zip", 5); 然後使用如下的方法,外語DVD可以列舉壓縮檔內所有的檔案: // 傳入參數: 來源壓縮檔檔名
public static void List(string zipFile)
{
if (File.Exists(zipFile))
{
ZipFile zip = new ZipFile(zipFile); foreach (ZipEntry entry in zip)
{
if (entry.IsFile)
Console.WriteLine(entry.Name);
}
}
else
Console.WriteLine(zipFile + " 不存在");
} 呼叫 List ,將 test.zip 這壓縮檔所包含的檔案印出:
List("C:\\Downloads\\test.zip"); [hr] 解壓縮:// 解壓縮檔案,傳入參數: 來源壓縮檔, 解壓縮後的目的路徑
public static void Uncompress(string zipFileName, string targetPath)
{
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFileName)))
{
// 若目的路徑不存在,xyz軟體補給站則先建立路徑
DirectoryInfo di = new DirectoryInfo(targetPath);

if (!di.Exists)
di.Create(); ZipEntry theEntry; // 逐一取出壓縮檔內的檔案(解壓縮)
while ((theEntry = s.GetNextEntry()) != null)
{
int size = 2048;
byte[] data = new byte[2048]; Console.WriteLine("正在解壓縮: " + GetBasename(theEntry.Name)); // 寫入檔案
using (FileStream fs = new FileStream(di.FullName + "\\" + GetBasename(theEntry.Name), FileMode.Create))
{
while (true)
{
size = s.Read(data, 0, data.Length);

if (size > 0)
fs.Write(data, 0, size);
else
break;
} }
}
}
}// 取得檔名(去除路徑)
public static string GetBasename(string fullName)
{
string result;
int lastBackSlash = fullName.LastIndexOf("\\");
result = fullName.Substring(lastBackSlash + 1);" return result;
} 呼叫 Upcompress ,將 test.zip 這壓縮檔解壓縮至 C:\Downloads\test 目錄下:
Uncompress("C:\\Downloads\\test.zip", "C:\\Downloads\\test"); [hr]若需要更多資訊,可參考 SharpZipLib 官方說明文件。

逛上一篇:   逛下一篇:

作者: ebqukpae
  (2010-01-26 15:07)
推薦文章: 將本文章推薦到【百度收藏】 將本文章推薦到【YouPush】 將本文章推薦到【udn共享書籤】 將本文章推薦到【Fiigo】書籤

 本文章共有回覆 2 篇,分 1 頁
 聲明:以上內容不代表本站立場,且內容由網友發表提供,若有爭議或違法由發表者承擔,本站將不負責連帶責任,謝謝。

 IPoBar  愛PK  愛遊戲  愛online
新手教學 客服中心 站務公告 交換連結 合作提案 關於我們
 
版權所有©ipobar Ltd., All Rights Reserved.
論壇內會員言論僅代表個人觀點,不代表本站同意其說法,本討論區不承擔由該言論所引起的法律責任