UnpackFileToStream(Stream: IIOStream);
Stream. Поток, в который будет распакован текущий элемент.
Метод UnpackFileToStream распаковывает текущий элемент архива в указанный поток.
Метод актуален для использования, если текущий элемент соответствует файлу.
Для выполнения примера предполагается наличие на диске архива D:\Work\Archives\Data.zip. В архиве содержатся различные папки и файлы, также могут присутствовать XML-файлы.
Добавьте ссылку на системную сборку IO.
Sub UserProc;
Var
ZIP: IZipArchive;
ZIPEntry: IZipArchiveEntry;
Extention: String;
Stream: IIOStream;
XMLDoc: IXMLDOMDocument;
i, c: Integer;
Begin
// Чтение архива
ZIP := New ZipArchive.Create("D:\Work\Archives\Data.zip", ZipMode.Read);
c := ZIP.Count;
// Просмотр содержимого архива
For i := 0 To c - 1 Do
ZIPEntry := ZIP.Item(i);
Extention := Path.GetExtension(ZIPEntry.ArchPath);
If Extention = "" Then
Debug.WriteLine("Папка: " + ZIPEntry.ArchPath);
Else
Debug.WriteLine("-----Файл: " + ZIPEntry.ArchPath + "------");
Debug.WriteLine("Исходный размер файла: " + ZIPEntry.Size.ToString + " байт." +
" Дата последней модификации: " + ZIPEntry.ModificationDate.ToString);
If String.ToLower(Extention) = ".xml" Then
Stream := New MemoryStream.Create;
// Распаковка файла в поток
ZIPEntry.UnpackFileToStream(Stream);
Stream.Position := 0;
// Создание XML-документа на основе содержимого потока
XMLDoc := New DOMDocument60.Create;
XMLDoc.load(Stream);
Debug.WriteLine("Текст XML-документа: " + XMLDoc.text);
//...
// Дальнейшая работа с XML-структурой
//...
Dispose XMLDoc;
End If;
End If;
End For;
Dispose ZIP;
End Sub UserProc;
При выполнении примера в консоль среды разработки будет выведена информация о содержимом указанного архива. Если элемент архива соответствует XML-файлу, то в консоль также будет выведен текст этого файла.
См. также: