ZipArchiveEntry ZipArchiveEntry ZipArchiveEntry ZipArchiveEntry Class

定義

zip アーカイブ内の圧縮ファイルを表します。Represents a compressed file within a zip archive.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
継承
ZipArchiveEntryZipArchiveEntryZipArchiveEntryZipArchiveEntry

最初の例は、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

2番目の例は、拡張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、3つのクラス (、、およびZipArchiveEntry) ZipArchiveに分散されています。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クラスの2つの拡張メソッドにアクセスできます。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. アセンブリはでWindows 8Windows 8は使用できません。 System.IO.Compression.FileSystemThe System.IO.Compression.FileSystem assembly is not available in Windows 8Windows 8. アプリWindows 8.x ストアWindows 8.x Storeでは、またGZipStreamを使用しDeflateStreamてアーカイブの内容を圧縮解除できます。またWindows ランタイムWindows Runtimeは、圧縮プログラムおよび圧縮解除タイプを使用して、ファイルを圧縮および圧縮解除できます。In Windows 8.x ストアWindows 8.x Store apps, you can decompress the contents of an archive by using DeflateStream or GZipStream, or you can use the Windows ランタイムWindows Runtime types Compressor and Decompressor to compress and decompress files.

プロパティ

Archive Archive Archive Archive

エントリが属する zip アーカイブを取得します。Gets the zip archive that the entry belongs to.

CompressedLength CompressedLength CompressedLength CompressedLength

zip アーカイブ内のエントリの圧縮サイズを取得します。Gets the compressed size of the entry in the zip archive.

Crc32 Crc32 Crc32 Crc32
ExternalAttributes ExternalAttributes ExternalAttributes ExternalAttributes

OS およびアプリケーション固有のファイル属性。OS and application specific file attributes.

FullName FullName FullName FullName

zip アーカイブ内のエントリの相対パスを取得します。Gets the relative path of the entry in the zip archive.

LastWriteTime LastWriteTime LastWriteTime LastWriteTime

zip アーカイブのエントリが最後に変更されたときを取得または設定します。Gets or sets the last time the entry in the zip archive was changed.

Length Length Length Length

zip アーカイブ内のエントリの非圧縮サイズを取得します。Gets the uncompressed size of the entry in the zip archive.

Name Name Name Name

zip アーカイブ内のエントリのファイル名を取得します。Gets the file name of the entry in the zip archive.

メソッド

Delete() Delete() Delete() Delete()

zip アーカイブからエントリを削除します。Deletes the entry from the zip archive.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
Open() Open() Open() Open()

zip のアーカイブからエントリを開きます。Opens the entry from the zip archive.

ToString() ToString() ToString() ToString()

zip アーカイブ内のエントリの相対パスを取得します。Retrieves the relative path of the entry in the zip archive.

拡張メソッド

ExtractToFile(ZipArchiveEntry, String) ExtractToFile(ZipArchiveEntry, String) ExtractToFile(ZipArchiveEntry, String) ExtractToFile(ZipArchiveEntry, String)

zip アーカイブのエントリをファイルに抽出します。Extracts an entry in the zip archive to a file.

ExtractToFile(ZipArchiveEntry, String, Boolean) ExtractToFile(ZipArchiveEntry, String, Boolean) ExtractToFile(ZipArchiveEntry, String, Boolean) 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.

適用対象