Delphi FMX (Android) - Как читать текстовый файл внутри zip потока без извлечения? - PullRequest
1 голос
/ 19 июня 2020

Можно ли прочитать файл из zip-файла без его распаковки? Я хочу прочитать текстовый файл из сжатого файла (как ресурсы android) в строках Memo.

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;

1 Ответ

2 голосов
/ 19 июня 2020

TZipFile имеет методы publi c Read(), которые позволяют получить либо TBytes полного распакованного файла, либо TStream для динамического чтения распакованных байтов. Вы можете использовать эти байты для записи в TMemo по мере необходимости.

Например, используя TStream, вы можете читать байты из файла в локальный буфер, пока не встретите разрыв строки, а затем добавьте буфер в TMemo и очистите буфер, повторяя, пока не дойдете до конца TStream.

Обратите внимание, что в любом случае вы получите доступ к raw байтов текстового файла, тогда как TMemo ожидает строки Unicode, поэтому вам придется преобразовать байты в Unicode, например, с SysUtils.TEncoding, на основе фактической кодировки текстового файла. Например, используя TEncoding.UTF8, если текстовый файл имеет кодировку UTF-8. TEncoding имеет GetString() методы преобразования TBytes данных в UnicodeString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...