ZipFile.ExtractToDirectory メソッド

定義

指定した zip アーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all the files in the specified zip archive to a directory on the file system.

オーバーロード

ExtractToDirectory(String, String)

指定した zip アーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all the files in the specified zip archive to a directory on the file system.

ExtractToDirectory(String, String, Boolean)

指定したアーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all of the files in the specified archive to a directory on the file system.

ExtractToDirectory(String, String, Encoding)

指定した zip アーカイブのすべてのファイルをファイル システムのディレクトリに抽出し、エントリ名に指定した文字エンコーディングを使用します。Extracts all the files in the specified zip archive to a directory on the file system and uses the specified character encoding for entry names.

ExtractToDirectory(String, String, Encoding, Boolean)

指定したアーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all of the files in the specified archive to a directory on the file system.

ExtractToDirectory(String, String)

指定した zip アーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all the files in the specified zip archive to a directory on the file system.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName);
static member ExtractToDirectory : string * string -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String)

パラメーター

sourceArchiveFileName
String

抽出するアーカイブのパス。The path to the archive that is to be extracted.

destinationDirectoryName
String

抽出ファイルを置くディレクトリのパス。相対パスまたは絶対パスとして指定します。The path to the directory in which to place the extracted files, specified as a relative or absolute path. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

例外

destinationDirectoryName または sourceArchiveFileNameEmpty であるか、空白文字のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。destinationDirectoryName or sourceArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

destinationDirectoryName または sourceArchiveFileNamenull です。destinationDirectoryName or sourceArchiveFileName is null.

destinationDirectoryName または sourceArchiveFileName の指定されたパスがシステムで定義されている最大長を超えています。The specified path in destinationDirectoryName or sourceArchiveFileName exceeds the system-defined maximum length.

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。The specified path is invalid (for example, it is on an unmapped drive).

destinationDirectoryName で指定されたディレクトリは既に存在します。The directory specified by destinationDirectoryName already exists.

または-or- アーカイブ内のエントリの名前が Empty であるか、名前に空白だけが含まれているか、無効な文字が少なくとも 1 つ含まれています。The name of an entry in the archive is Empty, contains only white space, or contains at least one invalid character.

- または --or- アーカイブ エントリを抽出すると、destinationDirectoryName で指定されているディレクトリの外部にファイルが作成されます。Extracting an archive entry would create a file that is outside the directory specified by destinationDirectoryName. (たとえば、エントリ名に親ディレクトリのアクセサーが含まれている場合に発生する可能性があります。)(For example, this might happen if the entry name contains parent directory accessors.) または-or- 抽出するアーカイブ エントリの名前が、同じアーカイブから既に抽出したエントリと同じです。An archive entry to extract has the same name as an entry that has already been extracted from the same archive.

呼び出し元に、アーカイブまたは目的のディレクトリにアクセスするために必要な許可がありません。The caller does not have the required permission to access the archive or the destination directory.

destinationDirectoryName または sourceArchiveFileName に無効な書式が含まれています。destinationDirectoryName or sourceArchiveFileName contains an invalid format.

sourceArchiveFileName が見つかりませんでした。sourceArchiveFileName was not found.

sourceArchiveFileName で指定されたアーカイブが有効な zip アーカイブではありません。The archive specified by sourceArchiveFileName is not a valid zip archive.

- または --or- アーカイブ エントリが見つからないか、破損しています。An archive entry was not found or was corrupt.

または-or- アーカイブ エントリはサポートされていない圧縮方法を使用して圧縮されました。An archive entry was compressed by using a compression method that is not supported.

この例では、 ZipFileクラスを使用して zip アーカイブを作成および抽出する方法を示します。This example shows how to create and extract a zip archive by using the ZipFile class. フォルダーの内容を zip 形式のアーカイブに圧縮し、そのコンテンツを新しいフォルダーに抽出します。It compresses the contents of a folder into a zip archive and extracts that content to a new folder. ZipFile クラスを使用するには、プロジェクトの System.IO.Compression.FileSystem アセンブリを参照する必要があります。To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

using System;
using System.IO.Compression;

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

        ZipFile.CreateFromDirectory(startPath, zipPath);

        ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
}
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = ".\start"
        Dim zipPath As String = ".\result.zip"
        Dim extractPath As String = ".\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

注釈

このメソッドは、指定されたディレクトリとすべてのサブディレクトリを作成します。This method creates the specified directory and all subdirectories. コピー先のディレクトリが既に存在することはできません。The destination directory cannot already exist. パラメーターまたはsourceArchiveFileNameパラメーターのパスの検証destinationDirectoryNameに関連する例外は、抽出の前にスローされます。Exceptions related to validating the paths in the destinationDirectoryName or sourceArchiveFileName parameters are thrown before extraction. それ以外の場合、抽出中にエラーが発生すると、アーカイブは部分的に抽出されたままになります。Otherwise, if an error occurs during extraction, the archive remains partially extracted. 抽出された各ファイルの相対パスは、ソースエントリdestinationDirectoryNameがアーカイブのルートにあるため、で指定したディレクトリと同じ相対パスになります。Each extracted file has the same relative path to the directory specified by destinationDirectoryName as its source entry has to the root of the archive.

ExtractToDirectory(String, String, Boolean)

指定したアーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all of the files in the specified archive to a directory on the file system.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : string * string * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, overwriteFiles As Boolean)

パラメーター

sourceArchiveFileName
String

抽出されるアーカイブへのファイル システム上のパス。The path on the file system to the archive that is to be extracted.

destinationDirectoryName
String

ファイル システム上のコピー先ディレクトリへのパス。The path to the destination directory on the file system. 指定されたディレクトリは存在する必要がありませんが、含まれるディレクトリは存在する必要があります。The directory specified must not exist, but the directory that it is contained in must exist.

overwriteFiles
Boolean

ファイルを上書きする場合は true。それ以外の場合は falsetrue to overwrite files; false otherwise.

例外

sourceArchiveFileName または destinationDirectoryName は長さ 0 の文字列で、空白のみが含まれるか、または InvalidPathChars で定義される 1 つまたは複数の無効な文字が含まれます。sourceArchiveFileName or destinationDirectoryName is a zero-length string, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

sourceArchiveFileName または destinationDirectoryNamenull です。sourceArchiveFileName or destinationDirectoryName is null.

sourceArchiveFileName または destinationDirectoryName で、システム定義の最大長を超えるパス、ファイル名、またはその両方を指定します。sourceArchiveFileName or destinationDirectoryName specifies a path, a file name, or both that exceed the system-defined maximum length.

sourceArchiveFileName または destinationDirectoryName で指定されたパスが正しくありません (マップされていないドライブ上にあるなど)。The path specified by sourceArchiveFileName or destinationDirectoryName is invalid (for example, it is on an unmapped drive).

destinationDirectoryName で指定されたディレクトリは既に存在します。The directory specified by destinationDirectoryName already exists.

または-or-

I/O エラーが発生しました。An I/O error has occurred.

または-or-

ZipArchiveEntry の名前は長さ 0 の文字列で、空白のみが含まれるか、または InvalidPathChars で定義される 1 つまたは複数の無効な文字が含まれます。The name of a ZipArchiveEntry is zero-length, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- または --or-

ZipArchiveEntry を抽出すると、(親ディレクトリのアクセサーによってなど) コピー先のディレクトリの外部にあるターゲット ファイルが生成されます。Extracting a ZipArchiveEntry would result in a file destination that is outside the destination directory (for example, because of parent directory accessors).

- または --or-

ZipArchiveEntry には、同じアーカイブから既に抽出されたエントリと同じ名前が付けられています。A ZipArchiveEntry has the same name as an already extracted entry from the same archive.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

sourceArchiveFileName または destinationDirectoryName の形式が正しくありません。sourceArchiveFileName or destinationDirectoryName is in an invalid format.

sourceArchiveFileName が見つかりませんでした。sourceArchiveFileName was not found.

sourceArchiveFileName で指定されたアーカイブが有効な ZipArchive ではありません。The archive specified by sourceArchiveFileName is not a valid ZipArchive.

- または --or-

ZipArchiveEntry が見つからないか、破損しています。A ZipArchiveEntry was not found or was corrupt.

- または --or-

ZipArchiveEntry は、サポートされていない圧縮方法を使用して圧縮されています。A ZipArchiveEntry has been compressed using a compression method that is not supported.

注釈

指定されたディレクトリが存在してはなりません。The specified directory must not exist. メソッドは、指定されたディレクトリとすべてのサブディレクトリを作成します。The method creates the specified directory and all subdirectories.

アーカイブの抽出中にエラーが発生した場合、アーカイブは部分的に抽出されたままになります。If there is an error while extracting the archive, the archive will remain partially extracted.

抽出されたファイルの相対パスが、アーカイブに対するエントリの場合とdestinationDirectoryName同じになるように、各エントリが抽出されます。Each entry will be extracted such that the extracted file has the same relative path to the destinationDirectoryName as the entry has to the archive.

パスには、相対パスまたは絶対パス情報を指定できます。The path can specify relative or absolute path information. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

アーカイブ対象のファイルの最終更新時刻が無効である場合、Zip タイムスタンプ形式 (1980 年1月1日午前0時) で表現できる最初の日付と時刻が使用されます。If a file to be archived has an invalid last modified time, the first date and time representable in the Zip timestamp format (midnight on January 1, 1980) will be used.

ExtractToDirectory(String, String, Encoding)

指定した zip アーカイブのすべてのファイルをファイル システムのディレクトリに抽出し、エントリ名に指定した文字エンコーディングを使用します。Extracts all the files in the specified zip archive to a directory on the file system and uses the specified character encoding for entry names.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding);
static member ExtractToDirectory : string * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding)

パラメーター

sourceArchiveFileName
String

抽出するアーカイブのパス。The path to the archive that is to be extracted.

destinationDirectoryName
String

抽出ファイルを置くディレクトリのパス。相対パスまたは絶対パスとして指定します。The path to the directory in which to place the extracted files, specified as a relative or absolute path. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

entryNameEncoding
Encoding

このアーカイブのエントリ名の読み取りまたは書き込み時に使用するエンコード。The encoding to use when reading or writing entry names in this archive. エントリ名の UTF-8 エンコードをサポートしない zip アーカイブ ツールとライブラリとの相互運用性のためにエンコードが必要な場合にのみ、このパラメーターの値を指定してください。Specify a value for this parameter only when an encoding is required for interoperability with zip archive tools and libraries that do not support UTF-8 encoding for entry names.

例外

destinationDirectoryName または sourceArchiveFileNameEmpty であるか、空白文字のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。destinationDirectoryName or sourceArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

- または --or- entryNameEncoding は UTF-8 以外の Unicode エンコーディングに設定されています。entryNameEncoding is set to a Unicode encoding other than UTF-8.

destinationDirectoryName または sourceArchiveFileNamenull です。destinationDirectoryName or sourceArchiveFileName is null.

destinationDirectoryName または sourceArchiveFileName の指定されたパスがシステムで定義されている最大長を超えています。The specified path in destinationDirectoryName or sourceArchiveFileName exceeds the system-defined maximum length.

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。The specified path is invalid (for example, it is on an unmapped drive).

destinationDirectoryName で指定されたディレクトリは既に存在します。The directory specified by destinationDirectoryName already exists.

または-or- アーカイブ内のエントリの名前が Empty であるか、名前に空白だけが含まれているか、無効な文字が少なくとも 1 つ含まれています。The name of an entry in the archive is Empty, contains only white space, or contains at least one invalid character.

- または --or- アーカイブ エントリを抽出すると、destinationDirectoryName で指定されているディレクトリの外部にファイルが作成されます。Extracting an archive entry would create a file that is outside the directory specified by destinationDirectoryName. (たとえば、エントリ名に親ディレクトリのアクセサーが含まれている場合に発生する可能性があります。)(For example, this might happen if the entry name contains parent directory accessors.) または-or- 抽出するアーカイブ エントリの名前が、同じアーカイブから既に抽出したエントリと同じです。An archive entry to extract has the same name as an entry that has already been extracted from the same archive.

呼び出し元に、アーカイブまたは目的のディレクトリにアクセスするために必要な許可がありません。The caller does not have the required permission to access the archive or the destination directory.

destinationDirectoryName または sourceArchiveFileName に無効な書式が含まれています。destinationDirectoryName or sourceArchiveFileName contains an invalid format.

sourceArchiveFileName が見つかりませんでした。sourceArchiveFileName was not found.

sourceArchiveFileName で指定されたアーカイブが有効な zip アーカイブではありません。The archive specified by sourceArchiveFileName is not a valid zip archive.

- または --or- アーカイブ エントリが見つからないか、破損しています。An archive entry was not found or was corrupt.

- または --or- アーカイブ エントリはサポートされていない圧縮方法を使用して圧縮されました。An archive entry was compressed by using a compression method that is not supported.

注釈

このメソッドは、指定されたディレクトリとすべてのサブディレクトリを作成します。This method creates the specified directory and all subdirectories. コピー先のディレクトリが既に存在することはできません。The destination directory cannot already exist. パラメーターまたはsourceArchiveFileNameパラメーターのパスの検証destinationDirectoryNameに関連する例外は、抽出の前にスローされます。Exceptions related to validating the paths in the destinationDirectoryName or sourceArchiveFileName parameters are thrown before extraction. それ以外の場合、抽出中にエラーが発生すると、アーカイブは部分的に抽出されたままになります。Otherwise, if an error occurs during extraction, the archive remains partially extracted. 抽出された各ファイルの相対パスは、ソースエントリdestinationDirectoryNameがアーカイブのルートにあるため、で指定したディレクトリと同じ相対パスになります。Each extracted file has the same relative path to the directory specified by destinationDirectoryName as its source entry has to the root of the archive.

entryNameEncoding 以外nullの値に設定されている場合、エントリ名は次の規則に従ってデコードされます。If entryNameEncoding is set to a value other than null, entry names are decoded according to the following rules:

  • 言語エンコードフラグ (ローカルファイルヘッダーの汎用ビットフラグ) が設定されていないエントリ名の場合は、指定されたエンコーディングを使用してエントリ名がデコードされます。For entry names where the language encoding flag (in the general-purpose bit flag of the local file header) is not set, the entry names are decoded by using the specified encoding.

  • 言語エンコードフラグが設定されているエントリでは、UTF-8 を使用してエントリ名がデコードされます。For entries where the language encoding flag is set, the entry names are decoded by using UTF-8.

entryNameEncodingnull設定されている場合、エントリ名は次の規則に従ってデコードされます。If entryNameEncoding is set to null, entry names are decoded according to the following rules:

  • 言語エンコードフラグ (ローカルファイルヘッダーの汎用ビットフラグ) が設定されていないエントリの場合、エントリ名は、現在のシステムの既定のコードページを使用してデコードされます。For entries where the language encoding flag (in the general-purpose bit flag of the local file header) is not set, entry names are decoded by using the current system default code page.

  • 言語エンコードフラグが設定されているエントリでは、UTF-8 を使用してエントリ名がデコードされます。For entries where the language encoding flag is set, the entry names are decoded by using UTF-8.

ExtractToDirectory(String, String, Encoding, Boolean)

指定したアーカイブのすべてのファイルをファイル システムのディレクトリに抽出します。Extracts all of the files in the specified archive to a directory on the file system.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory (string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : string * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)

パラメーター

sourceArchiveFileName
String

抽出されるアーカイブへのファイル システム上のパス。The path on the file system to the archive that is to be extracted.

destinationDirectoryName
String

ファイル システム上のコピー先ディレクトリへのパス。The path to the destination directory on the file system. 指定されたディレクトリは存在する必要がありませんが、含まれるディレクトリは存在する必要があります。The directory specified must not exist, but the directory that it is contained in must exist.

entryNameEncoding
Encoding

この ZipArchive のエントリ名の読み取り時に使用するエンコード。The encoding to use when reading entry names in this ZipArchive.

overwriteFiles
Boolean

ファイルを上書きする場合は true。それ以外の場合は falsetrue to overwrite files; false otherwise.

例外

sourceArchiveFileName または destinationDirectoryName は長さ 0 の文字列で、空白のみが含まれるか、または InvalidPathChars で定義される 1 つまたは複数の無効な文字が含まれます。sourceArchiveFileName or destinationDirectoryName is a zero-length string, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- または --or- entryNameEncoding は UTF-8 以外の Unicode エンコーディングに設定されています。entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceArchiveFileName または destinationDirectoryNamenull です。sourceArchiveFileName or destinationDirectoryName is null.

sourceArchiveFileName または destinationDirectoryName で、システム定義の最大長を超えるパス、ファイル名、またはその両方を指定します。sourceArchiveFileName or destinationDirectoryName specifies a path, a file name, or both that exceed the system-defined maximum length.

sourceArchiveFileName または destinationDirectoryName で指定されたパスが正しくありません (マップされていないドライブ上にあるなど)。The path specified by sourceArchiveFileName or destinationDirectoryName is invalid (for example, it is on an unmapped drive).

destinationDirectoryName で指定されたディレクトリは既に存在します。The directory specified by destinationDirectoryName already exists.

- または --or-

I/O エラーが発生しました。An I/O error has occurred.

または-or-

ZipArchiveEntry の名前は長さ 0 の文字列で、空白のみが含まれるか、または InvalidPathChars で定義される 1 つまたは複数の無効な文字が含まれます。The name of a ZipArchiveEntry is zero-length, contains only whitespace, or contains one or more invalid characters as defined by InvalidPathChars.

- または --or-

ZipArchiveEntry を抽出すると、(親ディレクトリのアクセサーによってなど) コピー先のディレクトリの外部にあるターゲット ファイルが生成されます。Extracting a ZipArchiveEntry would result in a file destination that is outside the destination directory (for example, because of parent directory accessors).

- または --or-

ZipArchiveEntry には、同じアーカイブから既に抽出されたエントリと同じ名前が付けられています。A ZipArchiveEntry has the same name as an already extracted entry from the same archive.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

sourceArchiveFileName または destinationDirectoryName の形式が正しくありません。sourceArchiveFileName or destinationDirectoryName is in an invalid format.

sourceArchiveFileName が見つかりませんでした。sourceArchiveFileName was not found.

sourceArchiveFileName で指定されたアーカイブが有効な ZipArchive ではありません。The archive specified by sourceArchiveFileName is not a valid ZipArchive.

または-or-

アーカイブ エントリが見つからないか、破損しています。An archive entry was not found or was corrupt.

または-or-

サポートされていない圧縮方式を使用して、アーカイブ エントリが圧縮されています。An archive entry has been compressed using a compression method that is not supported.

注釈

指定されたディレクトリが存在してはなりません。The specified directory must not exist. このメソッドは、指定されたディレクトリとすべてのサブディレクトリを作成します。This method will create the specified directory and all subdirectories.

アーカイブの抽出中にエラーが発生した場合、アーカイブは部分的に抽出されたままになります。If there is an error while extracting the archive, the archive will remain partially extracted.

抽出されたファイルの相対パスが、アーカイブに対するエントリの場合とdestinationDirectoryName同じになるように、各エントリが抽出されます。Each entry will be extracted such that the extracted file has the same relative path to the destinationDirectoryName as the entry has to the archive.

パスには、相対パスまたは絶対パス情報を指定できます。The path can specify relative or absolute path information. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

アーカイブ対象のファイルの最終更新時刻が無効である場合、Zip タイムスタンプ形式 (1980 年1月1日午前0時) で表現できる最初の日付と時刻が使用されます。If a file to be archived has an invalid last modified time, the first date and time representable in the Zip timestamp format (midnight on January 1, 1980) will be used.

適用対象