0

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

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函数来设置缓冲区大小,可惜文件文件的完整内容都存放在缓冲区中。

你怎么看?

4

1 回答 1

1

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

不幸的是,无法使用 .zip 文件修改 zip 存档中的数据TZipFile。尽管您可以Extract()根据需要在外部修改特定文件,然后Add()将其重新转换TZipFileTZipFile. TZipFile是一个简单的框架,它只能读取一个 zip 存档并向其中添加新文件,没有别的。如果您需要对 zip 存档进行更多控制,最好使用更完整的第三方解决方案,例如 ZipForge。

于 2013-02-03T22:48:01.567 回答