![](/img/trans.png)
[英]Remove a file from a ZIP archive using JclCompression in Delphi XE2
[英]Read/Write file from a .zip archive
我應該使用存檔文件中的文件嗎? (讀-寫)。 通過以下代碼,我可以獲得所需的文件列表。
Zip := TZipFile.Create;
try
Zip.Open(FilePath, TZipMode.zmRead);
For File_Name in Zip.FileNames do
begin
//some code
end;
finally
Zip.Close;
FreeAndNil(Zip);
end;
我使用TZipFile.Read方法從.zip存檔中讀取文件。
此方法將文件的完整內容返回到TByte類型的緩沖區中。 但是只需要從頭開始讀取1MB的文件,而不是完整的文件。
讀取並分析1MB文件后,如果需要,應讀取完整文件並進行更改,然后重新保存文件以進行存檔。
程序的內存和速度非常重要。 我用來設置函數SetLength的緩沖區大小,不幸的是文件文件的完整內容存儲在緩沖區中。
你怎么看?
使用的重載版本TZipFile.Read()
返回一個TStream
代替的TBytes
。 這樣,您不必將整個文件讀取到內存中,並且可以根據需要僅讀取其開始字節。
不幸的是,無法使用TZipFile
修改zip存檔內的數據。 盡管您可以Extract()
特定文件,根據需要在外部進行修改,然后再將Add()
回TZipFile
,但是無法在TZipFile
刪除/替換給定的文件。 TZipFile
是一個簡單的框架,它只能讀取一個zip存檔並向其中添加新文件,僅此而已。 如果您需要對zip存檔進行更多控制,最好使用更完整的第三方解決方案,例如ZipForge。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.