當前位置:首頁 » 文件管理 » 解壓縮的庫

解壓縮的庫

發布時間: 2022-08-15 08:59:25

1. zlib庫可以解壓rar壓縮包嗎

1准備工作。下載zlib.dll。以及相關頭文件。將dll文件及頭文件加入工程。2壓縮:調用函數compress.形式為intcompress(Byte*dest,uLong*destLen,constByte*source,ULONGsourceLen);功能是將source指向的空間,長度為sourceLen的數據進行壓縮,壓縮數據儲存在dest中,長度由參數destLen返回。如果壓縮出錯,返回對應錯誤號,否則返回0.3解壓縮:調用函數uncompress.形式為intuncompress(Byte*dest,uLong*destLen,constByte*source,ULONGsourceLen);功能是將source指向的空間,長度為sourceLen的數據進行解壓縮,解壓縮後的數據儲存在dest中,長度由參數destLen返回。如果解壓縮出錯,返回對應錯誤號,否則返回0.

2. C++語言怎麼用zlib庫來解壓.ISO或.zip文件

下面是使用zlib庫的壓縮和解壓縮演示代碼:

#include <stdlib.h>
#include <stdio.h>
#include <zlib.h>
int main(int argc, char* argv[])
{
FILE* file;
uLong flen;
unsigned char* fbuf = NULL;
uLong clen;
unsigned char* cbuf = NULL;
/* 通過命令行參數將srcfile文件的數據壓縮後存放到dstfile文件中 */
if(argc < 3)
{
printf("Usage: zcdemo srcfile dstfile\n");
return -1;
}
if((file = fopen(argv[1], "rb")) == NULL)
{
printf("Can\'t open %s!\n", argv[1]);
return -1;
}
/* 裝載源文件數據到緩沖區 */
fseek(file, 0L, SEEK_END);    /* 跳到文件末尾 */
flen = ftell(file);        /* 獲取文件長度 */
fseek(file, 0L, SEEK_SET);
if((fbuf = (unsigned char*)malloc(sizeof(unsigned char) * flen)) == NULL)
{
printf("No enough memory!\n");
fclose(file);
return -1;
}
fread(fbuf, sizeof(unsigned char), flen, file);
/* 壓縮數據 */
clen = compressBound(flen);
if((cbuf = (unsigned char*)malloc(sizeof(unsigned char) * clen)) == NULL)
{
printf("No enough memory!\n");
fclose(file);
return -1;
}
if(compress(cbuf, &clen, fbuf, flen) != Z_OK)
{
printf("Compress %s failed!\n", argv[1]);
return -1;
}
fclose(file);
if((file = fopen(argv[2], "wb")) == NULL)
{
printf("Can\'t create %s!\n", argv[2]);
return -1;
}
/* 保存壓縮後的數據到目標文件 */
fwrite(&flen, sizeof(uLong), 1, file);    /* 寫入源文件長度 */
fwrite(&clen, sizeof(uLong), 1, file);    /* 寫入目標數據長度 */
fwrite(cbuf, sizeof(unsigned char), clen, file);
fclose(file);
free(fbuf);
free(cbuf);
return 0;
}

3. 用C語言簡單演示如何藉助zlib庫實現文件的壓縮和解壓縮

問題的根源在於這些網友對於字元串和位元組流的概念非常的模糊,對文本文件和二進制文件的區別常常模稜兩可,其實位元組流可以表示所有的數據,二進制文件才是任何文件的本質。位元組流是一個位元組接一個位元組,並沒有結束符號,所以需要給它一個長度信息。二進制文件是一個位元組接一個位元組,並沒有換行符之類的。文件壓縮的時候,可以通過源文件的長度自動計算緩沖區的長度,壓縮後寫入目標文件之前,需先保留源文件和目標數據的長度作為解壓縮的依據,參考如下代碼:#include #include #include int main(int argc, char* argv[]) { FILE* file; uLong flen; unsigned char* fbuf = NULL; uLong clen; unsigned char* cbuf = NULL; /* 通過命令行參數將srcfile文件的數據壓縮後存放到dstfile文件中 */ if(argc < 3) { printf("Usage: zcdemo srcfile dstfile\n"); return -1; } if((file = fopen(argv[1], "rb")) == NULL) { printf("Can\'t open %s!\n", argv[1]); return -1; } /* 裝載源文件數據到緩沖區 */ fseek(file, 0L, SEEK_END); /* 跳到文件末尾 */ flen = ftell(file); /* 獲取文件長度 */ fseek(file, 0L, SEEK_SET); if((fbuf = (unsigned char*)malloc(sizeof(unsigned char) * flen)) == NULL) { printf("No enough memory!\n"); fclose(file); return -1; } fread(fbuf, sizeof(unsigned char), flen, file); /* 壓縮數據 */ clen = compressBound(flen); if((cbuf = (unsigned char*)malloc(sizeof(unsigned char) * clen)) == NULL) { printf("No enough memory!\n"); fclose(file); return -1; } if(compress(cbuf, &clen, fbuf, flen) != Z_OK) { printf("Compress %s failed!\n", argv[1]); return -1; } fclose(file); if((file = fopen(argv[2], "wb")) == NULL) { printf("Can\'t create %s!\n", argv[2]); return -1; } /* 保存壓縮後的數據到目標文件 */ fwrite(&flen, sizeof(uLong), 1, file); /* 寫入源文件長度 */ fwrite(&clen, sizeof(uLong), 1, file); /* 寫入目標數據長度 */ fwrite(cbuf, sizeof(unsigned char), clen, file); fclose(file); free(fbuf); free(cbuf); return 0; }文件解壓縮的時候,可以通過保留信息得到緩沖區和數據流的大小,這樣解壓縮後直接保存即可,參考如下代碼:#include #include #include int main(int argc, char* argv[]) { FILE* file; uLong flen; unsigned char* fbuf = NULL; uLong ulen; unsigned char* ubuf = NULL; /* 通過命令行參數將srcfile文件的數據解壓縮後存放到dstfile文件中 */ if(argc < 3) { printf("Usage: zudemo srcfile dstfile\n"); return -1; } if((file = fopen(argv[1], "rb")) == NULL) { printf("Can\'t open %s!\n", argv[1]); return -1; } /* 裝載源文件數據到緩沖區 */ fread(&ulen, sizeof(uLong), 1, file); /* 獲取緩沖區大小 */ fread(&flen, sizeof(uLong), 1, file); /* 獲取數據流大小 */ if((fbuf = (unsigned char*)malloc(sizeof(unsigned char) * flen)) == NULL) { printf("No enough memory!\n"); fclose(file); return -1; } fread(fbuf, sizeof(unsigned char), flen, file); /* 解壓縮數據 */ if((ubuf = (unsigned char*)malloc(sizeof(unsigned char) * ulen)) == NULL) { printf("No enough memory!\n"); fclose(file); return -1; } if(uncompress(ubuf, &ulen, fbuf, flen) != Z_OK) { printf("Uncompress %s failed!\n", argv[1]); return -1; } fclose(file); if((file = fopen(argv[2], "wb")) == NULL) { printf("Can\'t create %s!\n", argv[2]); return -1; } /* 保存解壓縮後的數據到目標文件 */ fwrite(ubuf, sizeof(unsigned char), ulen, file); fclose(file); free(fbuf); free(ubuf); return 0; }

4. 手機解壓軟體有哪些

1、安卓解壓

安卓解壓是一款穩定、快速、高效的壓縮與解壓工具,是一款rar解壓利器, 支持zip,7-zip,rar,tar等主流壓縮格式,支持加密文件解壓與壓縮,解壓中文無亂碼,增加簡單文件管理功能。

(4)解壓縮的庫擴展閱讀

文件壓縮率取決於多種因素,包括文件類型、文件大小和壓縮方案。

對於包含大量不重復信息的文件(例如圖像或MP3文件),則不能使用這種機制來獲得很高的壓縮率,因為它們不包含重復多次的模式。

此外文件壓縮效率還取決於壓縮程序使用的具體演算法。有些程序能夠在某些類型的文件中更好地尋找到模式,因此能更有效地壓縮這些類型的文件。

其他一些壓縮程序在字典中又使用了字典,這使它們在壓縮大文件時表現很好,但是在壓縮較小的文件時效率不高。

5. C#求推薦一款能夠解壓縮帶密碼的壓縮包的類庫

可以用c#調用DOS命令,使用winrara或7zip實現這個功能

6. C++中如何調用zlib.dll進行解壓和壓縮

1 准備工作。
下載zlib.dll。以及相關頭文件。將dll文件及頭文件加入工程。
2 壓縮:
調用函數compress.
形式為
int compress(Byte * dest, uLong* destLen, const Byte *source, ULONG sourceLen);
功能是將source指向的空間,長度為sourceLen的數據進行壓縮,壓縮數據儲存在dest中,長度由參數destLen返回。
如果壓縮出錯,返回對應錯誤號,否則返回0.

3解壓縮:
調用函數uncompress.
形式為
int uncompress(Byte * dest, uLong* destLen, const Byte *source, ULONG sourceLen);
功能是將source指向的空間,長度為sourceLen的數據進行解壓縮,解壓縮後的數據儲存在dest中,長度由參數destLen返回。
如果解壓縮出錯,返回對應錯誤號,否則返回0.

7. 目前都有什麼壓縮軟體,要名稱和簡要介紹,謝謝

winrar,winzip這兩種是最常見和常用。無論中文版還是英文版,界面都很友好,也簡單,一看就會。

8. 想在linux上用C實現gzip壓縮與解壓縮,有沒有相關庫函數可以調用

linux下只支持tar.gz和tgz等格式.zip它是讀取不出來的!請您先用u盤把linux系統下的文件拷貝到windows系統下進行壓縮和解壓處理,處理完成放到u盤里帶到linux系統中,不過我不覺得linux系統會支持zip
bz2格式...
建議您用虛擬機載入linux系統

9. 高手進來一下啊!!!

不是病毒就是沒用的程序

一般rar zip 格式下 游戲就壓縮成安裝包或者是壓縮包

希望你再話點世界下個好點的

有一偏文章正好你看

游戲中如何讀取壓縮包文件 --------------------------------------------------------------------------------
頁面地址是:http://www.ynuit.com/ynuit/2005-10-17/article_view_770.htm
--------------------------------------------------------------------

我們在市場上買了一個游戲,很少會輕易的看到游戲目錄里一堆的BMP,PCX資源圖片。難道他們不使用BMP之類的文件作為圖片資源嗎?非也,其實他們把這些資源圖片進行了打包、壓縮。

舉幾個游戲的例子吧,大名鼎鼎westernwood的《紅色警戒》的.mix文件就是一種壓縮包,裡麵包含了一堆堆的游戲圖片,聲音等資源。還有blizzard的《星際爭霸》、《暗黑破壞神》、《魔獸系列》的.mpq文件也是一種壓縮包,裡麵包含了各種游戲使用的資源。幾乎所有的游戲都用到了壓縮包。

那麼為什麼要使用這種壓縮包呢?原因很多,首先就是壓縮,游戲中使用的圖片等資源都是極其適合壓縮的,這樣就減小了游戲的體積。如果把《紅色警戒2》的資源全部解開相信會超過3G。其次壓縮後文件體積的減小會帶來讀盤速度的顯著提高。通常一個2M的BMP文件可以被壓縮到700K以內,讀取一個2M的文件和讀取一個700K的文件然後再內存中解壓的速度對比是可想而知的。最後,將大量的資源文件打包能使得游戲目錄清晰,而不是一堆堆的文件夾和文件,這樣能減少磁碟空間的浪費,也減少了磁碟碎片。

說了那麼多壓縮包的好處,我們在游戲中到底怎麼使用壓縮包呢?
1.我們需要定義我們自己的壓縮包文件存儲格式。
2.根據1我們寫一個壓縮工具來對游戲中的資源進行壓縮存儲。
3.根據1我們寫一個解壓縮的庫以便我們游戲中使用。
4.在游戲的代碼中,我們調用這個庫,來讀取我們包中的文件。

看到這兒,似乎我們需要做的工作還是很多、很復雜的。要定義一個文件結構,又要寫壓縮工具、還要寫解壓庫。而我們真正使用確實在最後一步,而且是簡單的調用一個庫而已。似乎有點得不償失了。好了,我們現在要找一條捷徑來完成我們游戲使用壓縮包的問題,對於1和2來說其實很好辦,現成的就有很多壓縮軟體可以生成壓縮包,winzip,winrar,winace ……都是非常好的壓縮工具,這樣我們不用定義壓縮包的存儲格式,也不用編寫壓縮工具。不費任何力氣就完成了1和2兩步。那麼第3步又如何呢?文件存儲格式不是我們設計的,我們無法知道文件是如何組織、如何壓縮的,跟不用說知道如何壓縮了。不過上網搜索一下,我們還是能得到一些winzip,winrar格式的解壓縮源代碼的。不過研究起這些代碼來又是件痛苦的事情,更何況還要用在自己的游戲里。

到這里,我們又遇到了嚴峻的考驗,現在我向大家隆重介紹我們的壓軸法寶:MDFile文件系統。那麼,MDFile是個什麼東東呢?MDFile是一個可擴展的文件操作庫,可以用最最簡單的方法實現對任意壓縮包格式內文件的讀取。那麼到此,我們的3和4也都可以實現了。下面我們就以MDFile為例來說以下怎麼使用它來讀取我們包中的文件。

首先我們先獲取我們需要的MDFile庫,到中國游戲開發技術咨詢網上下載MDFile庫,點擊本站原創,找到MDFile並下載下來。

將庫放到你的工程中,並設置好,這里我就不詳細說如何設置一個外部的庫了,如果不會的話你可以參考相關的書。好了,下面我們就開始我們的代碼了,這里以讀取test.zip中的一個test.txt文件為例:

我們在程序中添加一個LoadFile的函數來載入一個包里的文件。
bool LoadFile(char* filename,char* packfile)

BYTE* buf=NULL; // 用來存放讀取出的文件的內容
CMD_File cmdfile(「ZipExt.dll」); // 我們先生成一個實例
cmdfile.Open(「test.zip」,true,true); // 打開test.zip這個壓縮包
cmdfile.Locate(「test.txt」); // 定位到test.txt文件
buf=new BYTE[cmdfile.GetLength()];// 根據test.txt的大小分配內存
cmdfile.Read(buf); // 讀取文件到我們的內存中
至此,buf中已經存儲了我們需要的test.zip中的test.txt文件的內容了
是不是很簡單呢?
細心的朋友可能已經注意到了,CMD_File cmdfile(「ZipExt.dll」);

這個初始化是什麼意思呢?就是用ZipExt.dll這個擴展庫來打開我們的test.zip文件,因為MDFile本身並不支持Zip格式,他支持內部的一種叫epk的壓縮包格式,為了讓他支持Zip你必須獲得ZipExt.dll這個擴展庫,同樣的如果你需要Rar支持你需要獲得RarExt.dll這個擴展庫。好在我們剛下載的MDFile包中已經包括了一個ZipExt.dll(在Sample\Sample4\Release中),也好在@J--S Studio在不停的開發MDFile的擴展庫,以便我們能夠使用更多的壓縮包格式。

需要一提的是:使用這些現成的壓縮軟體製作文件包雖然簡單,但是也有很多問題,例如安全性,有時候我們不想被其他人看到游戲中用到的資源,這時如果我們用的是Zip格式,那就可能輕易的被別人解開並修改了。這時,其實使用MDFile內部的epk格式就比較好,他使用動態加密技術,同時epk格式不被其他壓縮軟體支持,另外他的其他一些特性都是非常不錯的。同時為了支持epk格式,他還提供了一個JSFilePacker程序用來打包需要的文件並存成epk格式。所有的這些都可以在我們下載的MDFile中得到。  (JSFilePacker在tools下)

立即下載MDFile庫 http://dev.gameres.com/Program/Other/MDFile.zip

10. 有沒有會使用zlib庫解壓zip包的

bool unzip(const char *DestName, const char *SrcName) { //解壓縮文件時的源buffer char* uSorceBuffer = new char[1024*1024*2]; memset(uSorceBuffer,0,sizeof(char)*1024*1024*2); FILE* fp3; //打開欲解壓文件的文件指針 FILE* fp4; //創...

熱點內容
php花生 發布:2025-05-14 12:54:30 瀏覽:549
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427
七牛存儲待遇 發布:2025-05-14 12:27:20 瀏覽:422
C語言a35a4a5 發布:2025-05-14 11:53:48 瀏覽:813
android隱藏item 發布:2025-05-14 11:43:56 瀏覽:328
javawebeclipse編譯 發布:2025-05-14 11:35:24 瀏覽:938
可編程式控制制器試題 發布:2025-05-14 11:25:32 瀏覽:121
dsp混合編程 發布:2025-05-14 11:23:10 瀏覽:250
mysql添加存儲過程 發布:2025-05-14 11:23:01 瀏覽:882