C 壓縮打包檔案

2022-03-22 09:52:41 字數 3375 閱讀 7762

該控制項是使用csharp寫的,因此可以直接在dotnet環境中引用,不需要註冊。

利用 sharpziplib方便地壓縮和解壓縮檔案

最新版本的sharpziplib(0.84)增加了很多新的功能,其中包括增加了fastzip類,這讓我們可以非常方便地把乙個目錄壓縮成乙個壓縮包,經測試可以很好地支援檔案中包含中文以及空格的情況。

壓縮:

///

///建立zip物件

//////

檔名.

///將要壓縮的目錄.

public

static

void zipfile(string filename, string

directory)

catch

(exception)

}

解壓縮:

///

///解壓縮.

//////

檔案.///

解壓成功返回true,否則false

public

static

bool unpackfiles(string file, string

dir)

else

}streamwriter.close();}}

s.close();

return

true

; }

catch

(exception)

}

以下是sharpziplib的另一種方法,其中方法全:

///

///壓縮和解壓檔案

///public

class

zipclass

filestream streamtozip = new

filestream(filetozip, filemode.open, fileaccess.read);

filestream zipfile =file.create(zipedfile);

zipoutputstream zipstream = new

zipoutputstream(zipfile);

zipentry zipentry = new

zipentry(filetozip);

zipstream.putnextentry(zipentry);

zipstream.setlevel(compressionlevel);

byte buffer = new

byte

[blocksize];

int size = streamtozip.read(buffer, 0

, buffer.length);

zipstream.write(buffer,

0, size);

try }

catch

(exception ex)

zipstream.finish();

zipstream.close();

streamtozip.close();

gc.collect();

}//////

壓縮目錄(包括子目錄及所有檔案)

/// ///

要壓縮的根目錄

///儲存路徑

///壓縮程度,範圍0-9,數值越大,壓縮程式越高

public

void zipfilefromdirectory(string rootpath, string destinationpath, int

compresslevel)

*///

string rootmark = rootpath.substring(0, rootpath.lastindexof("\\") + 1);

//得到當前路徑的位置,以備壓縮時將所壓縮內容轉變成相對路徑。

string rootmark = rootpath + "

\\";//

得到當前路徑的位置,以備壓縮時將所壓縮內容轉變成相對路徑。

crc32 crc = new

crc32();

zipoutputstream outputstream = new

zipoutputstream(file.create(destinationpath));

outputstream.setlevel(compresslevel);

//0 - store only to 9 - means best compression

foreach (string file in

files)

this

.files.clear();

foreach (string emptypath in

paths)

this

.paths.clear();

outputstream.finish();

outputstream.close();

gc.collect();

}//////

取得目錄下所有檔案及資料夾,分別存入files及paths

/// ///

根目錄 private

void getalldirectories(string

rootpath)

string files =directory.getfiles(rootpath);

foreach (string file in

files)

if (subpaths.length == files.length && files.length == 0)//

如果是空目錄

}//////

解壓縮檔案(壓縮檔案中含有子目錄)

/// ///

待解壓縮的檔案路徑

///解壓縮到指定目錄

///解壓後的檔案列表

public list unzip(string zipfilepath, string

unzippath)

zipinputstream s = new

zipinputstream(file.openread(zipfilepath));

zipentry theentry;

while ((theentry = s.getnextentry()) != null

)

if (filename !=string.empty)

else

}streamwriter.close();}}

s.close();

gc.collect();

return

unzipfiles;

}}

檔案壓縮打包

1.gzip 1 gzip gzip 檔案 生成.gz檔案 2 gzip 6 預設級別 3 gzip d 壓縮檔案 解壓縮 4 gunzip 壓縮檔案 解壓縮 5 zcat 壓縮檔案 檢視壓縮檔案內容 2.bzip2 1 bzip2 檔案 生成.bz2檔案 2 bzip2 9 預設級別 3 bzip...

檔案壓縮與打包

檔案壓縮原理 目前計算機都是使用所謂的byte來計量的,而事實上最小的計量單位應該是bit,而 byte 8bit,而對於數字 byte也就是乙個bit,相當於浪費了7個bit,因此可以壓縮。linux常見的壓縮命令 壓縮檔案的拓展名一般是 tar gz tgz等 gzip最常見的壓縮命令 壓縮檔案...

檔案打包及壓縮

檔案打包及壓縮 demo 複製未打包的檔案到遠端主機 root vmware du sh etc 39m etc root vmware rsync va etc study 172.25.202.20 tmp 將 etc下的所有檔案.root vmware rsync va etc study 1...