簡體   English   中英

從.zip存檔讀取/寫入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM