SharpZipLib 檔案 資料夾壓縮

2021-09-10 03:22:22 字數 3027 閱讀 6462

zipfile類用於選擇檔案或資料夾進行壓縮生成壓縮包。

常用屬性:

屬性說明

count

檔案數目(注意是在comitupdat之後才有)

password

壓縮包密碼

size

壓縮包占用空間大小

name

壓縮包名稱,預設輸出是檔案路徑

zipentry

壓縮包裡的檔案,通過索引訪問

其常用方法如下:

方法說明

add新增要進行壓縮的檔案

adddirectory

新增資料夾(不會壓縮資料夾裡的檔案)

delete

刪除檔案或資料夾

beginupdate

開始修改壓縮包

commitupdate

提交修改

setcomment

新增注釋

示例1(建立壓縮檔案):

using (zipfile zip = zipfile.create(@"d:\test.zip"))

這樣生成的壓縮包是包含子資料夾,子資料夾也是包含子檔案的。

其中,注釋如下:

示例2:修改壓縮包

using(zipfile zip = new zipfile(@"d:\test.zip"))
留意這個示例和上面的有什麼不同,上面的是create方法建立的zipfile物件,而這裡是直接讀。因此,如果壓縮包裡面有檔案,則不會改動原來的壓縮檔案,而是往會裡面新增乙個。這樣就相當於壓縮包的修改,而上面是壓縮包的建立。

示例3:讀取壓縮包裡的檔案:

using (zipfile zip = new zipfile(@"d:\test.zip"))

zipentry z1 = zip[0];

console.writeline(z1.name);

}

這個類就兩個方法:

方法說明

createzip

壓縮目錄

extractzip

解壓縮目錄

1、fastzip用於快速壓縮目錄,示例如下:

//快速壓縮目錄,包括目錄下的所有檔案

(new fastzip()).createzip(@"d:\test.zip", @"d:\test\", true, "");

這個是遞迴壓縮的。但是侷限性就是只能壓縮資料夾。

否則報如下錯誤:

2、快速解壓縮目錄

//快速解壓

(new fastzip()).extractzip(@"d:\test.zip", @"d:\解壓目錄\", "");

以上兩個類是sharpziplib的主類,最耐玩的就是這兩個類。

zipoutputstream常用屬性:

屬性說明

isfinished

zipoutputstream是否已結束

zipoutputstream常用方法:

方法說明

closeentry

關閉入口,關閉之後不允許再對zipoutputstream進行操作

finish

結束寫入

getlevel

讀取壓縮等級

putnextentry

往zipoutputstream裡寫入乙個zipentry

setcomment

壓縮包的注釋

setlevel

設定壓縮等級,等級越高檔案越小

write

寫入檔案內容

使用zipoutputstream建立乙個壓縮包並往裡面寫入乙個檔案的示例:

static void main(string args)

while (sourcebytes > 0);

}s.closeentry();

}console.readkey();

}

以上示例僅僅能夠壓縮檔案,要壓縮資料夾就要使用遞迴的方式,迴圈子目錄並壓縮子目錄裡的檔案。

示例2:資料夾壓縮,保持原資料夾架構:

class program

console.readkey();

}/// /// 壓縮

///

/// 源目錄

/// zipoutputstream物件

public static void compress(string source, zipoutputstream s)

else

while (sourcebytes > 0);}}}}}

附上解壓縮方法:

/// /// 解壓縮

///

/// 原始檔

/// 目標路經

public bool decompress(string sourcefile, string targetpath)

' ", sourcefile));

}if (!directory.exists(targetpath))

using (zipinputstream s = new zipinputstream(file.openread(sourcefile)))

if (filename != string.empty)

else break;}}

}}}return true;

}

posted @

2017-12-25 16:26

李華麗 閱讀(

...)

編輯收藏

利用SharpZipLib壓縮 解壓檔案

public class zipinfo 壓縮檔案 private void filetozip string path,string address 解壓到乙個目錄 public bool ziptofile string path,string addres s.close catch exce...

C 壓縮檔案(SharpZipLib)

使用國外開源加壓解壓庫icsharpcode.sharpziplib實現加壓,該庫的官方 為 使用體驗 可以照著例子實現簡單的加壓解壓,可以加壓乙個資料夾中的所有檔案,但沒有提供加壓子資料夾的說明。目前網上的一些 有的無法加壓空資料夾,有的加壓了用rar解不開,這是一點需要改進的。但如果只需要加壓資...

SharpZipLib壓縮檔案和資料夾

正常zip方式壓縮檔案,然後用wrar工具可以解壓出來 開始用wrar3.4版本的怎麼也解不出來,以為是不支援wrar解壓,後來改用3.9及4.11版本可以實現正常解壓,搞了半天時間,原來是版本問題,版本不對害死人啊 另外wrar壓縮時選擇 zip 選項壓縮時,再用此類進行解壓,也可以正常解壓。在此...