IZipArchiveEntry.UnpackFileToStream

Синтаксис

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-файлу, то в консоль также будет выведен текст этого файла.

См. также:

IZipArchiveEntry