我应该使用存档文件中的文件。 (读写)。通过以下代码,我得到了满足我需求的文件列表。
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的缓冲区大小,遗憾的是文件文件的完整内容存储在缓冲区中。
您怎么看?
答案 0 :(得分:1)
使用TZipFile.Read()
的重载版本返回TStream
而不是TBytes
。这样,您就不必将整个文件读入内存,并且可以根据需要只读取其起始字节。
不幸的是,无法使用TZipFile
修改zip存档内的数据。虽然您可以Extract()
某个特定文件,但可以根据需要在外部进行修改,然后Add()
将其重新导入TZipFile
,但无法删除/替换{{1}中的给定文件}。 TZipFile
是一个简单的框架,它只能读取zip存档并向其添加新文件,而不是其他任何内容。如果您需要更多地控制zip存档,最好使用更完整的第三方解决方案,例如ZipForge。