ZipArchiveEntry Класс

Определение

Представляет сжатый файл внутри ZIP-архива.Represents a compressed file within a zip archive.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Наследование
ZipArchiveEntry

Примеры

В первом примере показано, как создать новую запись в ZIP-архиве и записать в нее.The first example shows how to create a new entry in a zip archive and write to it.

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            using (FileStream zipToOpen = new FileStream(@"c:\users\exampleuser\release.zip", FileMode.Open))
            {
                using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                {
                    ZipArchiveEntry readmeEntry = archive.CreateEntry("Readme.txt");
                    using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
                    {
                            writer.WriteLine("Information about this package.");
                            writer.WriteLine("========================");
                    }
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Using zipToOpen As FileStream = New FileStream("c:\users\exampleuser\release.zip", FileMode.Open)
            Using archive As ZipArchive = New ZipArchive(zipToOpen, ZipArchiveMode.Update)
                Dim readmeEntry As ZipArchiveEntry = archive.CreateEntry("Readme.txt")
                Using writer As StreamWriter = New StreamWriter(readmeEntry.Open())
                    writer.WriteLine("Information about this package.")
                    writer.WriteLine("========================")
                End Using
            End Using
        End Using
    End Sub

End Module

Во втором примере показано, как использовать метод расширения ExtractToFile(ZipArchiveEntry, String).The second example shows how to use the ExtractToFile(ZipArchiveEntry, String) extension method. Чтобы выполнить код, необходимо сослаться на сборку System.IO.Compression.FileSystem в проекте.You must reference the System.IO.Compression.FileSystem assembly in your project for the code to execute.

using System;
using System.IO;
using System.IO.Compression;

class Program
{
    static void Main(string[] args)
    {
        string zipPath = @".\result.zip";

        Console.WriteLine("Provide path where to extract the zip file:");
        string extractPath = Console.ReadLine();

        // Normalizes the path.
        extractPath = Path.GetFullPath(extractPath);

        // Ensures that the last character on the extraction path
        // is the directory separator char. 
        // Without this, a malicious zip file could try to traverse outside of the expected
        // extraction path.
        if (!extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
            extractPath += Path.DirectorySeparatorChar;

        using (ZipArchive archive = ZipFile.OpenRead(zipPath))
        {
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                {
                    // Gets the full path to ensure that relative segments are removed.
                    string destinationPath = Path.GetFullPath(Path.Combine(extractPath, entry.FullName));

                    // Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
                    // are case-insensitive.
                    if (destinationPath.StartsWith(extractPath, StringComparison.Ordinal))
                        entry.ExtractToFile(destinationPath);
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = ".\result.zip"

        Console.WriteLine("Provide path where to extract the zip file:")
        Dim extractPath As String = Console.ReadLine()

        ' Normalizes the path.
        extractPath = Path.GetFullPath(extractPath)

        ' Ensures that the last character on the extraction path
        ' is the directory separator char. 
        ' Without this, a malicious zip file could try to traverse outside of the expected
        ' extraction path.
        If Not extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) Then
            extractPath += Path.DirectorySeparatorChar
        End If

        Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
            For Each entry As ZipArchiveEntry In archive.Entries
                If entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then

                    ' Gets the full path to ensure that relative segments are removed.
                    Dim destinationPath As String = Path.GetFullPath(Path.Combine(extractPath, entry.FullName))
                    
                    ' Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
                    ' are case-insensitive.
                    If destinationPath.StartsWith(extractPath, StringComparison.Ordinal) Then 
                        entry.ExtractToFile(destinationPath)
                    End If

                End If
            Next
        End Using
    End Sub

End Module

Комментарии

ZIP-архив содержит запись для каждого сжатого файла.A zip archive contains an entry for each compressed file. Класс ZipArchiveEntry позволяет проверять свойства записи, а также открывать или удалять запись.The ZipArchiveEntry class enables you to examine the properties of an entry, and open or delete the entry. При открытии записи можно изменить сжатый файл, записав в поток для этого сжатого файла.When you open an entry, you can modify the compressed file by writing to the stream for that compressed file.

Методы управления ZIP-архивами и записи файлов распределены по трем классам: ZipFile, ZipArchive и ZipArchiveEntry.The methods for manipulating zip archives and their file entries are spread across three classes: ZipFile, ZipArchive and ZipArchiveEntry.

Действие...To… Используйте:Use…
Создание ZIP-архива из каталогаCreate a zip archive from a directory ZipFile.CreateFromDirectory
Извлечение содержимого ZIP-архива в каталогExtract the contents of a zip archive to a directory ZipFile.ExtractToDirectory
Добавление новых файлов в существующий ZIP-архивAdd new files to an existing zip archive ZipArchive.CreateEntry
Получение файла в ZIP-архивеRetrieve an file in a zip archive ZipArchive.GetEntry
Получение всех файлов в ZIP-архивеRetrieve all of the files in a zip archive ZipArchive.Entries
Открытие потока для отдельного файла, содержащегося в ZIP-архивеTo open a stream to an individual file contained in a zip archive ZipArchiveEntry.Open
Удаление файла из ZIP-архиваDelete a file from a zip archive ZipArchiveEntry.Delete

При ссылке на сборку System.IO.Compression.FileSystem в проекте можно получить доступ к двум методам расширения для класса ZipArchiveEntry.If you reference the System.IO.Compression.FileSystem assembly in your project, you can access two extension methods for the ZipArchiveEntry class. Эти методы являются ExtractToFile(ZipArchiveEntry, String) и ExtractToFile(ZipArchiveEntry, String, Boolean)и позволяют распаковать содержимое записи в файл.Those methods are ExtractToFile(ZipArchiveEntry, String) and ExtractToFile(ZipArchiveEntry, String, Boolean), and they enable you to decompress the contents of the entry to a file. System.IO.Compression.FileSystemная сборка недоступна в Windows 8Windows 8.The System.IO.Compression.FileSystem assembly is not available in Windows 8Windows 8. В Магазин Windows 8.xWindows 8.x Store приложениях можно распаковать содержимое архива с помощью DeflateStream или GZipStreamили использовать типы Среда выполнения WindowsWindows Runtime сжатия и декомпрессор для сжатия и распаковки файлов.In Магазин Windows 8.xWindows 8.x Store apps, you can decompress the contents of an archive by using DeflateStream or GZipStream, or you can use the Среда выполнения WindowsWindows Runtime types Compressor and Decompressor to compress and decompress files.

Свойства

Archive

Получает ZIP-архив, к которому принадлежит запись.Gets the zip archive that the entry belongs to.

CompressedLength

Получает сжатый размер записи в ZIP-архиве.Gets the compressed size of the entry in the zip archive.

Crc32

32-разрядная циклическая избыточная проверка.The 32-bit Cyclic Redundant Check.

ExternalAttributes

Атрибуты файла, зависящие от операционной системы и приложения.OS and application specific file attributes.

FullName

Получает относительный путь записи в ZIP-архиве.Gets the relative path of the entry in the zip archive.

LastWriteTime

Получает или задает время последнего изменения записи в ZIP-архиве.Gets or sets the last time the entry in the zip archive was changed.

Length

Получает несжатый размер записи в ZIP-архиве.Gets the uncompressed size of the entry in the zip archive.

Name

Получает имя файла записи в ZIP-архиве.Gets the file name of the entry in the zip archive.

Методы

Delete()

Удаляет запись из ZIP-архива.Deletes the entry from the zip archive.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Open()

Открывает запись из ZIP-архива.Opens the entry from the zip archive.

ToString()

Извлекает относительный путь записи в ZIP-архиве.Retrieves the relative path of the entry in the zip archive.

Методы расширения

ExtractToFile(ZipArchiveEntry, String)

Извлекает запись в ZIP-архиве в файл.Extracts an entry in the zip archive to a file.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Извлекает запись из ZIP-архива в файл и при необходимости перезаписывает существующий файл с тем же именем.Extracts an entry in the zip archive to a file, and optionally overwrites an existing file that has the same name.

Применяется к