是否可以从 zip 文件中读取文件而不解压它?我想从备忘录行中的压缩文件(作为 Android Assets )读取文本文件。
ZipFile := TZipFile.Create; //Zipfile: TZipFile
try
ZipFile.Open('C:\Path\to\file.zip', zmRead);
for I := 0 to ZipFile.FileCount - 1 do
begin
if ZipFile.FileNames[I]='A1.txt' then //S: string
//My problem is here ? How load A1.txt to memo lines?
Memo1.Lines.Add(S);
end;
ZipFile.Close;
finally
ZipFile.Free;
end;
最佳答案
TZipFile
具有公共(public) Read()
方法允许您获取完整解压文件的 TBytes
或用于动态读取解压字节的 TStream
。您可以根据需要使用这些字节写入 TMemo
。
例如,使用TStream
,您可以将文件中的字节读入本地缓冲区,直到遇到换行符,然后将缓冲区添加到TMemo
并清除缓冲区,重复直到到达 TStream
的末尾。
请注意,无论哪种情况,您都将访问文本文件的原始字节,而TMemo
需要Unicode字符串,因此您必须转换字节根据文本文件的实际编码,转换为 Unicode,例如使用 SysUtils.TEncoding
。例如,如果文本文件采用 UTF-8 编码,则使用 TEncoding.UTF8
。 TEncoding
具有用于将 TBytes
数据转换为 UnicodeString
的 GetString()
方法。
关于Delphi FMX (Android) - 如何读取 zip 流中的文本文件而不解压?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474627/