ZipFile.Open メソッド

定義

指定したパスとモードで zip アーカイブを開きます。

オーバーロード

Open(String, ZipArchiveMode)

指定したパスとモードで zip アーカイブを開きます。

Open(String, ZipArchiveMode, Encoding)

指定されたモードで、エントリ名に指定された文字エンコーディングを使用して指定されたパスの zip のアーカイブを開きます。

Open(String, ZipArchiveMode)

指定したパスとモードで zip アーカイブを開きます。

public:
 static System::IO::Compression::ZipArchive ^ Open(System::String ^ archiveFileName, System::IO::Compression::ZipArchiveMode mode);
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode);
static member Open : string * System.IO.Compression.ZipArchiveMode -> System.IO.Compression.ZipArchive
Public Shared Function Open (archiveFileName As String, mode As ZipArchiveMode) As ZipArchive

パラメーター

archiveFileName
String

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

mode
ZipArchiveMode

開いているアーカイブのエントリで許可されている操作を指定する列挙値の 1 つ。

戻り値

ZipArchive

開いている zip アーカイブ。

例外

archiveFileNameEmpty か、空白のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。

archiveFileNamenullです。

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

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

archiveFileName を開けませんでした。

- または -

modeCreate に設定されていますが、archiveFileName に指定されたファイルが既に存在します。

- または -

ファイルを開くときに、指定されていない I/O エラーが発生しました。

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

- または -

archiveFileName で指定されたファイルにアクセスするために必要なアクセス許可が呼び出し元にありません。

mode に無効な値が指定されています。

modeRead に設定されていますが、archiveFileName に指定されたファイルが見つかりません。

archiveFileName に無効な書式指定が格納されています。

archiveFileName は zip アーカイブとして解釈できませんでした。

- または -

modeUpdate ですが、エントリが見つからないか、または破損していて読み取ることができません。

- または -

modeUpdate ですが、エントリが大きすぎてメモリに収まりません。

次の例は、更新モードで zip アーカイブを開き、アーカイブにエントリを追加する方法を示しています。

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

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";

            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = "c:\users\exampleuser\end.zip"
        Dim extractPath As String = "c:\users\exampleuser\extract"
        Dim newFile As String = "c:\users\exampleuser\NewFile.txt"

        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
            archive.ExtractToDirectory(extractPath)
        End Using
    End Sub

End Module

注釈

パラメーターを にmodeRead設定すると、ファイル モードの値として 列挙から FileModeOpenアーカイブが開かれます。 アーカイブが存在しない場合は、 FileNotFoundException 例外がスローされます。 パラメーターを にmodeRead設定することは、 メソッドの呼び出しとOpenRead同じです。

パラメーターを にmodeCreate設定すると、アーカイブは ファイル モードの値として でFileMode.CreateNew開かれます。 アーカイブが既に存在する場合は、 IOException がスローされます。

パラメーターを にmodeUpdate設定すると、アーカイブは ファイル モードの値として でFileMode.OpenOrCreate開かれます。 アーカイブが存在する場合は開かれます。 既存のエントリを変更し、新しいエントリを作成できます。 アーカイブが存在しない場合は、新しいアーカイブが作成されます。ただし、モードでの zip アーカイブの作成は、モードでのUpdateCreate作成ほど効率的ではありません。

適用対象

Open(String, ZipArchiveMode, Encoding)

指定されたモードで、エントリ名に指定された文字エンコーディングを使用して指定されたパスの zip のアーカイブを開きます。

public:
 static System::IO::Compression::ZipArchive ^ Open(System::String ^ archiveFileName, System::IO::Compression::ZipArchiveMode mode, System::Text::Encoding ^ entryNameEncoding);
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding entryNameEncoding);
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding? entryNameEncoding);
static member Open : string * System.IO.Compression.ZipArchiveMode * System.Text.Encoding -> System.IO.Compression.ZipArchive
Public Shared Function Open (archiveFileName As String, mode As ZipArchiveMode, entryNameEncoding As Encoding) As ZipArchive

パラメーター

archiveFileName
String

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

mode
ZipArchiveMode

開いているアーカイブのエントリで許可されている操作を指定する列挙値の 1 つ。

entryNameEncoding
Encoding

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

戻り値

ZipArchive

開いている zip アーカイブ。

例外

archiveFileNameEmpty か、空白のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。

- または -

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

archiveFileNamenullです。

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

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

archiveFileName を開けませんでした。

- または -

modeCreate に設定されていますが、archiveFileName に指定されたファイルが既に存在します。

- または -

ファイルを開くときに、指定されていない I/O エラーが発生しました。

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

- または -

archiveFileName で指定されたファイルにアクセスするために必要なアクセス許可が呼び出し元にありません。

mode に無効な値が指定されています。

modeRead に設定されていますが、archiveFileName に指定されたファイルが見つかりません。

archiveFileName に無効な書式指定が格納されています。

archiveFileName は zip アーカイブとして解釈できませんでした。

- または -

modeUpdate ですが、エントリが見つからないか、または破損していて読み取ることができません。

- または -

modeUpdate ですが、エントリが大きすぎてメモリに収まりません。

注釈

パラメーターを にmodeRead設定すると、アーカイブは ファイル モードの値として でFileMode.Open開かれます。 アーカイブが存在しない場合は、 FileNotFoundException 例外がスローされます。 パラメーターを にmodeRead設定することは、 メソッドの呼び出しとOpenRead同じです。

パラメーターを にmodeCreate設定すると、アーカイブは ファイル モードの値として でFileMode.CreateNew開かれます。 アーカイブが既に存在する場合は、 IOException がスローされます。

パラメーターを にmodeUpdate設定すると、アーカイブは ファイル モードの値として でFileMode.OpenOrCreate開かれます。 アーカイブが存在する場合は開かれます。 既存のエントリを変更し、新しいエントリを作成できます。 アーカイブが存在しない場合は、新しいアーカイブが作成されます。ただし、モードでの zip アーカイブの作成は、モードでのUpdateCreate作成ほど効率的ではありません。

読み取り entryNameEncoding 用に zip アーカイブ ファイルを開き、 が に null設定されている場合、エントリ名は次の規則に従ってデコードされます。

  • 言語エンコード フラグ (ローカル ファイル ヘッダーの汎用ビット フラグ) が設定されていない場合は、現在のシステムの既定のコード ページを使用してエントリ名をデコードします。

  • 言語エンコード フラグが設定されている場合は、UTF-8 を使用してエントリ名をデコードします。

読み取り entryNameEncoding 用に zip アーカイブ ファイルを開き、 以外 nullの値に設定すると、エントリ名は次の規則に従ってデコードされます。

  • 言語エンコード フラグが設定されていない場合は、指定された がエントリ名のデコードに使用されます entryNameEncoding

  • 言語エンコード フラグが設定されている場合は、UTF-8 を使用してエントリ名をデコードします。

アーカイブ ファイルに書き込み、 entryNameEncoding が に null設定されている場合、エントリ名は次の規則に従ってエンコードされます。

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

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

アーカイブ ファイルに書き込み、 entryNameEncoding が 以外 nullの値に設定されている場合、指定された がエントリ名をバイトにエンコードするために使用されます entryNameEncoding 。 言語エンコード フラグ (ローカル ファイル ヘッダーの汎用ビット フラグ内) は、指定されたエンコードが UTF-8 エンコードの場合にのみ設定されます。

適用対象