C 中用SharpZipLib dll實現壓縮解壓

2021-05-17 09:36:18 字數 2650 閱讀 5082

using

system

;using

system

.collections

.generic;

using

system

.text

;using

system.io

;using icsharpcode.sharpziplib.checksums;

using icsharpcode.sharpziplib.zip.compression;

using icsharpcode.sharpziplib.zip.compression.streams;

using icsharpcode.sharpziplib.zip;

namespace playedit.classobj

}catch

finally

if(entry !

=null)gc

.collect();

gc.collect(1);}

folders =

directory

.getdirectories(foldertozip)

;foreach

(string folder in folders)

}return res;

}///

/// 壓縮目錄

///

/// 待壓縮的資料夾,全路徑格式

/// 壓縮後的檔名,全路徑格式

///

private

static

bool zipfiledictory(

string foldertozip,

string zipedfile,

int level)

zipoutputstream s =

new zipoutputstream(

file

.create(zipedfile));

s.setlevel(level)

;res = zipfiledictory(foldertozip, s,"")

;s.finish();

s.close();

return res;

}///

/// 壓縮檔案

///

/// 要進行壓縮的檔名

/// 壓縮後生成的壓縮檔案名

///

private

static

bool zipfile(

string filetozip,

string zipedfile,

int level)

//filestream fs = null;

filestream zipfile =

null

;zipoutputstream zipstream =

null

;zipentry zipentry =

null

;bool res =

true

;try

catch

finally

if(zipstream !

=null)if

(zipfile !

=null)gc

.collect();

gc.collect(1);}

return res;

}///

/// 壓縮檔案 和 資料夾

///

/// 待壓縮的檔案或資料夾,全路徑格式

/// 壓縮後生成的壓縮檔案名,全路徑格式

///

public

static

bool zip(

string filetozip,

string zipedfile,

int level)

elseif(

file

.exists(filetozip)

)else}}

///

/// 解壓類

///

public

class unzipclassif(

!directory

.exists(zipedfolder)

)zipinputstream s =

null

;zipentry theentry =

null

;string filename;

filestream

streamwriter

=null

;try

streamwriter

=file

.create(filename)

;int

size

= 2048;

byte

data

=new

byte

[2048]

;while

(true

)else}}

}}finally

if(theentry !

=null)if

(s !

=null)gc

.collect();

gc.collect(1);}

}}

}

堆,堆在C 中用法

堆有最大堆與最小堆,也有對應的push和pop操作。在最大堆中,最大的元素在堆頂,pop會將最大的元素推出,最小堆則反之。c 中的堆,要基於向量使用。操作基於三個函式std make heap,std push heap,std pop heap,並且要配合push back與pop back使用。...

c 中用new分配記憶體

new的作用和使用方法如下 new的作用在於可以在程式執行階段動態分配記憶體,記憶體的大小在執行時根據需要確定,從而 高效利用記憶體空間。new的使用方法如下 typename pointer name new typename使用時使用者需要指定型別 指標型別和要開闢的記憶體儲存的資料型別 new...

C 中使用者定義的轉換

看到 深度探索 c 物件模型 的第 21頁,在其談到 c struct 在c 中的乙個合理用途時,看到了 c 中使用者定義的轉換的運用。因而回頭將 c primer 中關於使用者定義的轉換的一些細節溫習了一下。1 使用者定義的轉換的必要性 我們希望能夠在 allint 物件和其他 allint 物件...