从.zip存档读/写文件

时间:2013-02-03 14:25:45

标签: delphi zipfile delphi-xe3 read-write

我应该使用存档文件中的文件。 (读写)。通过以下代码,我得到了满足我需求的文件列表。

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 个答案:

答案 0 :(得分:1)

使用TZipFile.Read()的重载版本返回TStream而不是TBytes。这样,您就不必将整个文件读入内存,并且可以根据需要只读取其起始字节。

不幸的是,无法使用TZipFile修改zip存档内的数据。虽然您可以Extract()某个特定文件,但可以根据需要在外部进行修改,然后Add()将其重新导入TZipFile,但无法删除/替换{{1}中的给定文件}。 TZipFile是一个简单的框架,它只能读取zip存档并向其添加新文件,而不是其他任何内容。如果您需要更多地控制zip存档,最好使用更完整的第三方解决方案,例如ZipForge。