導航:首頁 > 文件教程 > zlib32支持最大文件

zlib32支持最大文件

發布時間:2023-02-22 03:59:21

Ⅰ zlib下載文件在哪

第一步 下載並解壓zlib壓縮包

打開zlib官網,找到下載鏈接,右鍵復制地址:

在Linux中使用wget命令下載,執行如下命令開始下載:

wget http://zlib.net/zlib-1.2.8.tar.gz

解壓:

tar zxvf zlib-1.2.8.tar.gz

第二步 開始安裝

安裝過程比較簡單,進入zlib的解壓目錄,依次執行下面幾條命令即可:

配置:

./configure

如果之前沒有安裝gcc(C 編譯器),這一步將報如下錯誤信息::

xueliang@dev:~/download/zlib-1.2.8$ ./configure

Checking for gcc…

Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).

** ./configure aborting.

xueliang@dev:~/download/zlib-1.2.8$

希望我的回答能對你有所幫助。

Ⅱ 關於zlib解壓縮的問題~

壓縮與解壓縮的時候,分別有2個不同的版本,分別是safe和普通的版本。2個版本要對應起來。

你在解壓縮的時候,注意緩沖區大小了嗎?緩沖區夠用了嗎?在壓縮前,保存一下這個壓縮前的原始的長度,然後解壓前,分配一塊至少這么大的內存。

你實際調試過嗎?比如,你可以先去掉文件IO的過程,只是對一個字元串進行壓縮/解壓,然後看看是否正確;然後再加上文件IO,看看存取的過程是否正確。壓縮後的文件應該以二進制方式打開對吧。

Ⅲ 如何發揮zlib壓縮解壓的最大效

首先說明,這里不是橫向比較zlib與別的引擎(rar,leo,powerarc...),是探索如何發揮zlib壓縮/解壓的最大效率。
先看看如下代碼在效率上的差異:
var MS:TMemoryStream;(1):begin MS:=TMemoryStream.Create; MS.Size:=$400000;//4M------------------------------------------------(2):var i:integer;begin MS:=TMemoryStream.Create; for i:=1 to 1024 do MS.Size:=MS.Size+4096;

你會發現,方法(1)只要1個毫秒,方法(2)卻要20秒。
因此,如果把解壓縮程序寫成下面這樣,會非常沒有效率:
procere ZlibDeCompress(instream,outStream:TStream);var ACS:TDeCompressionStream; buf:array[1..4096] of byte; numread:integer;begin inStream.Position:=0; ACS:=TDeCompressionStream.Create(inStream); try repeat numRead:=ACS.Read(buf,sizeof(buf)); if numread>0 then outStream.Write(buf,numRead); until (numRead=0); finally ACS.Free; end;end;

如果我們知道原始資料的大小,一次確定outStream.Size,效率就可以提高幾十倍。方法很簡單,我們可以在壓縮時,把原始資料的Size寫在壓縮Stream的頭部,如,寫一個LongWord的大小,解壓時就可以先讀出Size,因此,最有效率的解壓程序為:
procere ZlibDecompressStream2(Source,Dest:TMemoryStream);var zstream: TZStreamRec; SourceLen,DestLen:LongWord;begin FillChar(zstream,SizeOf(TZStreamRec),0); SourceLen:=Source.Size; Source.Position:=0; Source.Read(DestLen,SizeOf(LongWord)); Dest.Size:=DestLen; zstream.next_in:=Pointer(LongWord(Source.Memory)+SizeOf(LongWord)); zstream.avail_in:=SourceLen-SizeOf(LongWord); zstream.next_out:=Dest.Memory; zstream.avail_out:=DestLen; ZDecompressCheck(InflateInit(zstream)); try ZDecompressCheck(inflate(zstream,Z_NO_FLUSH)); finally ZDecompressCheck(inflateEnd(zstream)); end;end;

用一個4M的文件試試,效率提高近70倍。
同樣道理,在壓縮的時候,如果能預先知道壓縮後的大小,也能提高效率不少,但這似乎是不可能的,也不能盲目的給outStream.Size一個"足夠大"的數值,只能按引擎的原理估算一個最接近的數值,zlib推薦的為:
((SourceLen+(SourceLen div 10)+12)+255) and not 255
因此,最有效率的壓縮程序為:
procere ZlibCompressStream2(Source,Dest:TMemoryStream; CompressLevel:TZCompressi);var zstream: TZStreamRec; SourceLen,DestLen:LongWord;begin FillChar(zstream,SizeOf(TZStreamRec),0); SourceLen:=Source.Size; DestLen:=SizeOf(LongWord)+((SourceLen+(SourceLen div 10)+12)+255) and not 255; Dest.Size:=DestLen; Dest.Position:=0; Dest.Write(SourceLen,Sizeof(LongWord)); zstream.next_in:=Source.Memory; zstream.avail_in:=SourceLen; zstream.next_out:=Pointer(LongWord(Dest.Memory)+SizeOf(LongWord)); zstream.avail_out:=DestLen-SizeOf(longWord); ZCompressCheck(DeflateInit(zstream,ZLevels[CompressLevel])); try ZCompressCheck(deflate(zstream,Z_FINISH)); finally ZCompressCheck(deflateEnd(zstream)); end; Dest.Size:=zstream.total_out+SizeOf(LongWord);end;

Ⅳ 如何用zlib將很多文件或一個文件夾壓縮

新建一個文件夾,把需要壓縮的東西拖到新建文件夾里,然後對著文件夾點右鍵,選擇添加到壓縮文件或者其他壓縮命令,在彈出的界面里點擊確定

Ⅳ 在Linux下,用zlib寫解壓文件的C程序,需要事先知道文件壓縮前的大小么怎麼得到

.gz文件的最後4位元組就是壓縮前的原長度(ISIZE),並且倒數第二個4位元組是壓縮前專原buffer的CRC32冗餘校驗值。參見標准文屬檔 rfc1952 (https://tools.ietf.org/html/rfc1952).

閱讀全文

與zlib32支持最大文件相關的資料

熱點內容
ps保存後會有個文件在桌面 瀏覽:677
sf文件夾 瀏覽:47
怎麼查看qq悄悄話好友 瀏覽:13
excel表格保存後怎麼恢復數據 瀏覽:372
wps文件怎麼改只讀文件 瀏覽:396
java自動補全 瀏覽:54
怎麼提高網路問卷通過率 瀏覽:656
數控火焰切割半圓弧怎麼編程 瀏覽:501
一加六手機數據備份在哪裡 瀏覽:264
手機app脫殼之後怎麼解壓 瀏覽:823
7700用win10 瀏覽:72
搖搖棒c程序 瀏覽:837
文件名後綴為svg是什麼意思 瀏覽:446
免費推廣的網站有哪些 瀏覽:271
微信綁定卡但是忘記密碼怎麼辦 瀏覽:372
資源文件mfc 瀏覽:519
哪裡能接到數據標注 瀏覽:254
getjson訪問本地文件 瀏覽:935
怎麼樣激活win10專業版 瀏覽:202
男運動裝備哪個app好 瀏覽:406

友情鏈接