ZipFile.CreateFromDirectory メソッド

定義

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成します。

オーバーロード

オーバーロード
CreateFromDirectory(String, String)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成します。

CreateFromDirectory(String, String, CompressionLevel, Boolean)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成し、指定した圧縮レベルを使用し、オプションでベース ディレクトリを含みます。

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成し、指定した圧縮レベルとエントリ名の文字エンコーディングを使用し、オプションでベース ディレクトリを含みます。

CreateFromDirectory(String, String)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成します。

public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);

パラメーター

sourceDirectoryName
String

アーカイブするディレクトリのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

destinationArchiveFileName
String

作成するアーカイブのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

例外

sourceDirectoryName または destinationArchiveFileNameEmpty であるか、空白文字のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。

sourceDirectoryName または destinationArchiveFileNamenull です。

sourceDirectoryName または destinationArchiveFileName で、指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

sourceDirectoryName が無効または存在しません (割り当てられていないドライブであるなど)。

destinationArchiveFileName が既に存在します。

  • または - 指定したディレクトリのファイルが開きませんでした。

  • または -

アーカイブするファイルを開いているときに I/O エラーが発生しました。

destinationArchiveFileName がディレクトリを指定しています。

  • または - 呼び出し元に sourceDirectoryName で指定されたディレクトリまたは destinationArchiveFileName で指定されたファイルにアクセスするために必要なアクセス許可がありません。

sourceDirectoryName または destinationArchiveFileName に無効な書式が含まれています。

  • または - zip アーカイブは書き込みをサポートしません。

この例では、クラスを使用して zip アーカイブを作成および抽出する方法を示し ZipFile ます。 フォルダーの内容を zip アーカイブに圧縮し、そのコンテンツを新しいフォルダーに抽出します。 ZipFile クラスを使用するには、プロジェクトの System.IO.Compression.FileSystem アセンブリを参照する必要があります。

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);
    }
}

注釈

ファイルシステムのディレクトリ構造はアーカイブ内に保持されます。 ディレクトリが空の場合は、空のアーカイブが作成されます。 このメソッドのオーバーロードにはアーカイブ内のベースディレクトリは含まれず、圧縮レベルを指定することはできません。 ベースディレクトリを含める場合、または圧縮レベルを指定する場合は、 CreateFromDirectory(String, String, CompressionLevel, Boolean) メソッドオーバーロードを呼び出します。

アーカイブが既に存在する場合は、 IOException 例外がスローされます。 指定した名前のエントリがアーカイブ内に既に存在する場合は、同じ名前で2番目のエントリが作成されます。

ディレクトリ内のファイルをアーカイブに追加できない場合、アーカイブは不完全なままで無効になり、メソッドは例外をスローし IOException ます。

適用対象

.NET 6.0 RC 1 およびその他のバージョン
テーブル 2
製品 バージョン
.NET 5.0, 6.0 RC 1
.NET Core 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0
Xamarin.Android 7.1
Xamarin.iOS 10.8
Xamarin.Mac 3.0

CreateFromDirectory(String, String, CompressionLevel, Boolean)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成し、指定した圧縮レベルを使用し、オプションでベース ディレクトリを含みます。

public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);

パラメーター

sourceDirectoryName
String

アーカイブするディレクトリのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

destinationArchiveFileName
String

作成するアーカイブのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

compressionLevel
CompressionLevel

エントリの作成時に速度または圧縮の有効性を強調するかどうかを示す列挙値の 1 つ。

includeBaseDirectory
Boolean

アーカイブのルートにある sourceDirectoryName からのディレクトリ名を含める場合は true。ディレクトリの内容のみを含める場合は false

例外

sourceDirectoryName または destinationArchiveFileNameEmpty であるか、空白文字のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。

sourceDirectoryName または destinationArchiveFileNamenull です。

sourceDirectoryName または destinationArchiveFileName で、指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

sourceDirectoryName が無効または存在しません (割り当てられていないドライブであるなど)。

destinationArchiveFileName が既に存在します。

  • または - 指定したディレクトリのファイルが開きませんでした。

  • または -

アーカイブするファイルを開いているときに I/O エラーが発生しました。

destinationArchiveFileName がディレクトリを指定しています。

  • または - 呼び出し元に sourceDirectoryName で指定されたディレクトリまたは destinationArchiveFileName で指定されたファイルにアクセスするために必要なアクセス許可がありません。

sourceDirectoryName または destinationArchiveFileName に無効な書式が含まれています。

  • または - zip アーカイブは書き込みをサポートしません。

この例では、クラスを使用して zip アーカイブを作成および抽出する方法を示し ZipFile ます。 フォルダーの内容を zip アーカイブに圧縮し、そのコンテンツを新しいフォルダーに抽出します。 アーカイブを圧縮すると、ベースディレクトリが含められ、圧縮レベルが設定され、操作の速度が効率を超えて強調されます。 ZipFile クラスを使用するには、プロジェクトの System.IO.Compression.FileSystem アセンブリを参照する必要があります。

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

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

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}

注釈

ファイルシステムのディレクトリ構造はアーカイブ内に保持されます。 ディレクトリが空の場合は、空のアーカイブが作成されます。 このメソッドオーバーロードを使用して、圧縮レベルと、アーカイブにベースディレクトリを含めるかどうかを指定します。

アーカイブが既に存在する場合は、 IOException 例外がスローされます。 指定した名前のエントリがアーカイブ内に既に存在する場合は、同じ名前で2番目のエントリが作成されます。

ディレクトリ内のファイルをアーカイブに追加できない場合、アーカイブは不完全なままで無効になり、メソッドは例外をスローし IOException ます。

適用対象

.NET 6.0 RC 1 およびその他のバージョン
テーブル 3
製品 バージョン
.NET 5.0, 6.0 RC 1
.NET Core 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0
Xamarin.Android 7.1
Xamarin.iOS 10.8
Xamarin.Mac 3.0

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

指定したディレクトリのファイルおよびディレクトリを含む zip アーカイブを作成し、指定した圧縮レベルとエントリ名の文字エンコーディングを使用し、オプションでベース ディレクトリを含みます。


 
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);

パラメーター

sourceDirectoryName
String

アーカイブするディレクトリのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

destinationArchiveFileName
String

作成するアーカイブのパス。相対パスまたは絶対パスとして指定します。 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。

compressionLevel
CompressionLevel

エントリの作成時に速度または圧縮の有効性を強調するかどうかを示す列挙値の 1 つ。

includeBaseDirectory
Boolean

アーカイブのルートにある sourceDirectoryName からのディレクトリ名を含める場合は true。ディレクトリの内容のみを含める場合は false

entryNameEncoding
Encoding

このアーカイブのエントリ名の読み取りまたは書き込み時に使用するエンコード。 エントリ名の UTF-8 エンコードをサポートしない zip アーカイブ ツールとライブラリとの相互運用性のためにエンコードが必要な場合にのみ、このパラメーターの値を指定してください。

例外

sourceDirectoryName または destinationArchiveFileNameEmpty であるか、空白文字のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。

  • または - entryNameEncoding は UTF-8 以外の Unicode エンコーディングに設定されています。

sourceDirectoryName または destinationArchiveFileNamenull です。

sourceDirectoryName または destinationArchiveFileName で、指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

sourceDirectoryName が無効または存在しません (割り当てられていないドライブであるなど)。

destinationArchiveFileName が既に存在します。

  • または - 指定したディレクトリのファイルが開きませんでした。

  • または -

アーカイブするファイルを開いているときに I/O エラーが発生しました。

destinationArchiveFileName がディレクトリを指定しています。

  • または - 呼び出し元に sourceDirectoryName で指定されたディレクトリまたは destinationArchiveFileName で指定されたファイルにアクセスするために必要なアクセス許可がありません。

sourceDirectoryName または destinationArchiveFileName に無効な書式が含まれています。

  • または - zip アーカイブは書き込みをサポートしません。

注釈

ファイルシステムのディレクトリ構造はアーカイブ内に保持されます。 ディレクトリが空の場合は、空のアーカイブが作成されます。 このメソッドオーバーロードを使用して、圧縮レベルと文字エンコーディングを指定し、アーカイブにベースディレクトリを含めるかどうかを指定します。

アーカイブが既に存在する場合は、 IOException 例外がスローされます。 指定した名前のエントリがアーカイブ内に既に存在する場合は、同じ名前で2番目のエントリが作成されます。

ディレクトリ内のファイルをアーカイブに追加できない場合、アーカイブは不完全なままで無効になり、メソッドは例外をスローし IOException ます。

entryNameEncodingが以外の値に設定されている場合、 null エントリ名は指定されたエンコーディングを使用してエンコードされます。 指定されたエンコーディングが UTF-8 の場合、言語エンコードフラグ (ローカルファイルヘッダーの汎用ビットフラグ) が各エントリに対して設定されます。

がに設定されている場合、 entryNameEncoding null エントリ名は次の規則に従ってエンコードされます。

  • ASCII の範囲外の文字を含むエントリ名の場合、言語エンコードフラグが設定され、UTF-8 を使用してエントリ名がエンコードされます。

  • ASCII 文字のみを含むエントリ名の場合、言語エンコードフラグが設定され、現在のシステムの既定のコードページを使用してエントリ名がエンコードされます。

適用対象

.NET 6.0 RC 1 およびその他のバージョン
テーブル 4
製品 バージョン
.NET 5.0, 6.0 RC 1
.NET Core 1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0
Xamarin.Android 7.1
Xamarin.iOS 10.8
Xamarin.Mac 3.0