2013-02-03 81 views
0

我應該使用壓縮文件中的文件嗎? (讀寫)。通過下面的代碼,我得到了我需要的文件列表。從.zip壓縮包中讀取/寫入文件

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函數的緩衝區大小,遺憾的是文件文件的完整內容都存儲在緩衝區中。

您認爲如何?

回答

1

使用TZipFile.Read()的重載版本,該版本返回TStream而不是TBytes。這樣,您不必將整個文件讀入內存,並且可以根據需要只讀取其開始字節。

不幸的是,無法使用TZipFile修改zip存檔內部的數據。雖然你可以Extract()某個特定的文件,根據需要在外部修改它,然後Add()它回到TZipFile,但是無法刪除/替換TZipFile中的給定文件。 TZipFile是一個簡單的框架,它只能讀取一個zip壓縮文件並向其添加新文件,沒有別的。如果您需要更多控制zip壓縮文件,則最好使用更完整的第三方解決方案,例如ZipForge。