ZipFile.Open メソッド

定義

指定したパスとモードで zip アーカイブを開きます。Opens a zip archive at the specified path and in the specified mode.

オーバーロード

Open(String, ZipArchiveMode)

指定したパスとモードで zip アーカイブを開きます。Opens a zip archive at the specified path and in the specified mode.

Open(String, ZipArchiveMode, Encoding)

指定されたモードで、エントリ名に指定された文字エンコーディングを使用して指定されたパスの zip のアーカイブを開きます。Opens a zip archive at the specified path, in the specified mode, and by using the specified character encoding for entry names.

Open(String, ZipArchiveMode)

指定したパスとモードで zip アーカイブを開きます。Opens a zip archive at the specified path and in the specified mode.

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

開くアーカイブのパス。相対パスまたは絶対パスとして指定します。The path to the archive to open, specified as a relative or absolute path. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

mode
ZipArchiveMode

開いているアーカイブのエントリで許可されている操作を指定する列挙値の 1 つ。One of the enumeration values that specifies the actions which are allowed on the entries in the opened archive.

戻り値

ZipArchive

開いている zip アーカイブ。The opened zip archive.

例外

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

archiveFileNamenullです。archiveFileName is null.

archiveFileName で、指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。In archiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

archiveFileName が無効または存在しません (割り当てられていないドライブであるなど)。archiveFileName is invalid or does not exist (for example, it is on an unmapped drive).

archiveFileName を開けませんでした。archiveFileName could not be opened.

- または --or- modeCreate に設定されていますが、archiveFileName に指定されたファイルが既に存在します。mode is set to Create, but the file specified in archiveFileName already exists.

- または --or-

ファイルを開くときに、指定されていない I/O エラーが発生しました。An unspecified I/O error occurred while opening the file.

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

- または --or- archiveFileName で指定されたファイルにアクセスするために必要なアクセス許可が呼び出し元にありません。The caller does not have the required permission to access the file specified in archiveFileName.

mode に無効な値が指定されています。mode specifies an invalid value.

modeRead に設定されていますが、archiveFileName に指定されたファイルが見つかりません。mode is set to Read, but the file specified in archiveFileName is not found.

archiveFileName に無効な書式指定が格納されています。archiveFileName contains an invalid format.

archiveFileName は zip アーカイブとして解釈できませんでした。archiveFileName could not be interpreted as a zip archive.

- または --or- modeUpdate ですが、エントリが見つからないか、または破損していて読み取ることができません。mode is Update, but an entry is missing or corrupt and cannot be read.

- または --or- modeUpdate ですが、エントリが大きすぎてメモリに収まりません。mode is Update, but an entry is too large to fit into memory.

次の例では、更新モードで zip アーカイブを開き、アーカイブにエントリを追加する方法を示します。The following example shows how to open a zip archive in the update mode and add an entry to the archive.

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

注釈

パラメーターをに設定すると mode ReadOpen FileMode ファイルモード値として列挙からアーカイブが開かれます。When you set the mode parameter to Read, the archive is opened with Open from the FileMode enumeration as the file mode value. アーカイブが存在しない場合は、 FileNotFoundException 例外がスローされます。If the archive does not exist, a FileNotFoundException exception is thrown. modeパラメーターをに設定すること Read は、メソッドを呼び出すことと同じです OpenReadSetting the mode parameter to Read is equivalent to calling the OpenRead method.

パラメーターをに設定すると mode Create 、アーカイブは FileMode.CreateNew ファイルモード値としてで開かれます。When you set the mode parameter to Create, the archive is opened with FileMode.CreateNew as the file mode value. アーカイブが既に存在する場合は、 IOException がスローされます。If the archive already exists, an IOException is thrown.

パラメーターをに設定すると mode Update 、アーカイブは FileMode.OpenOrCreate ファイルモード値としてで開かれます。When you set the mode parameter to Update, the archive is opened with FileMode.OpenOrCreate as the file mode value. アーカイブが存在する場合は、そのアーカイブが開かれます。If the archive exists, it is opened. 既存のエントリを変更して、新しいエントリを作成することができます。The existing entries can be modified and new entries can be created. アーカイブが存在しない場合は、新しいアーカイブが作成されます。ただし、モードで zip アーカイブを作成する Update ことは、モードでの作成ほど効率的ではありません CreateIf the archive does not exist, a new archive is created; however, creating a zip archive in Update mode is not as efficient as creating it in Create mode.

適用対象

Open(String, ZipArchiveMode, Encoding)

指定されたモードで、エントリ名に指定された文字エンコーディングを使用して指定されたパスの zip のアーカイブを開きます。Opens a zip archive at the specified path, in the specified mode, and by using the specified character encoding for entry names.

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

開くアーカイブのパス。相対パスまたは絶対パスとして指定します。The path to the archive to open, specified as a relative or absolute path. 相対パスは、現在の作業ディレクトリに対して相対的に解釈されます。A relative path is interpreted as relative to the current working directory.

mode
ZipArchiveMode

開いているアーカイブのエントリで許可されている操作を指定する列挙値の 1 つ。One of the enumeration values that specifies the actions that are allowed on the entries in the opened archive.

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.

戻り値

ZipArchive

開いている zip アーカイブ。The opened zip archive.

例外

archiveFileNameEmpty か、空白のみが含まれているか、無効な文字が少なくとも 1 つ含まれています。archiveFileName 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.

archiveFileNamenullです。archiveFileName is null.

archiveFileName で、指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。In archiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

archiveFileName が無効または存在しません (割り当てられていないドライブであるなど)。archiveFileName is invalid or does not exist (for example, it is on an unmapped drive).

archiveFileName を開けませんでした。archiveFileName could not be opened.

- または --or- modeCreate に設定されていますが、archiveFileName に指定されたファイルが既に存在します。mode is set to Create, but the file specified in archiveFileName already exists.

- または --or-

ファイルを開くときに、指定されていない I/O エラーが発生しました。An unspecified I/O error occurred while opening the file.

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

- または --or- archiveFileName で指定されたファイルにアクセスするために必要なアクセス許可が呼び出し元にありません。The caller does not have the required permission to access the file specified in archiveFileName.

mode に無効な値が指定されています。mode specifies an invalid value.

modeRead に設定されていますが、archiveFileName に指定されたファイルが見つかりません。mode is set to Read, but the file specified in archiveFileName is not found.

archiveFileName に無効な書式指定が格納されています。archiveFileName contains an invalid format.

archiveFileName は zip アーカイブとして解釈できませんでした。archiveFileName could not be interpreted as a zip archive.

- または --or- modeUpdate ですが、エントリが見つからないか、または破損していて読み取ることができません。mode is Update, but an entry is missing or corrupt and cannot be read.

- または --or- modeUpdate ですが、エントリが大きすぎてメモリに収まりません。mode is Update, but an entry is too large to fit into memory.

注釈

パラメーターをに設定すると mode Read 、アーカイブは FileMode.Open ファイルモード値としてで開かれます。When you set the mode parameter to Read, the archive is opened with FileMode.Open as the file mode value. アーカイブが存在しない場合は、 FileNotFoundException 例外がスローされます。If the archive does not exist, a FileNotFoundException exception is thrown. modeパラメーターをに設定すること Read は、メソッドを呼び出すことと同じです OpenReadSetting the mode parameter to Read is equivalent to calling the OpenRead method.

パラメーターをに設定すると mode Create 、アーカイブは FileMode.CreateNew ファイルモード値としてで開かれます。When you set the mode parameter to Create, the archive is opened with FileMode.CreateNew as the file mode value. アーカイブが既に存在する場合は、 IOException がスローされます。If the archive already exists, an IOException is thrown.

パラメーターをに設定すると mode Update 、アーカイブは FileMode.OpenOrCreate ファイルモード値としてで開かれます。When you set the mode parameter to Update, the archive is opened with FileMode.OpenOrCreate as the file mode value. アーカイブが存在する場合は、そのアーカイブが開かれます。If the archive exists, it is opened. 既存のエントリを変更して、新しいエントリを作成することができます。The existing entries can be modified and new entries can be created. アーカイブが存在しない場合は、新しいアーカイブが作成されます。ただし、モードで zip アーカイブを作成する Update ことは、モードでの作成ほど効率的ではありません CreateIf the archive does not exist, a new archive is created; however, creating a zip archive in Update mode is not as efficient as creating it in Create mode.

Zip アーカイブファイルを読み取り用に開き、 entryNameEncoding をに設定すると null 、エントリ名は次の規則に従ってデコードされます。When you open a zip archive file for reading and entryNameEncoding is set to null, entry names are decoded according to the following rules:

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

  • 言語のエンコードフラグが設定されている場合は、UTF-8 を使用してエントリ名がデコードされます。When the language encoding flag is set, UTF-8 is used to decode the entry name.

読み取り用に zip アーカイブファイルを開いたときに entryNameEncoding 以外の値に設定されている場合 null 、エントリ名は次の規則に従ってデコードされます。When you open a zip archive file for reading and entryNameEncoding is set to a value other than null, entry names are decoded according to the following rules:

  • 言語のエンコードフラグが設定されていない場合は、指定されたを使用して entryNameEncoding エントリ名がデコードされます。When the language encoding flag is not set, the specified entryNameEncoding is used to decode the entry name.

  • 言語のエンコードフラグが設定されている場合は、UTF-8 を使用してエントリ名がデコードされます。When the language encoding flag is set, UTF-8 is used to decode the entry name.

アーカイブファイルに書き込み、 entryNameEncoding がに設定されている場合 null 、エントリ名は次の規則に従ってエンコードされます。When you write to archive files and entryNameEncoding is set to null, entry names are encoded according to the following rules:

  • ASCII の範囲外の文字を含むエントリ名の場合、言語エンコードフラグが設定され、エントリ名は UTF-8 を使用してエンコードされます。For entry names that contain characters outside the ASCII range, the language encoding flag is set, and entry names are encoded by using UTF-8.

  • ASCII 文字のみを含むエントリ名の場合、言語エンコードフラグは設定されず、エントリ名は、現在のシステムの既定のコードページを使用してエンコードされます。For entry names that contain only ASCII characters, the language encoding flag is not set, and entry names are encoded by using the current system default code page.

アーカイブファイルに書き込み、が以外の値に設定されている場合、指定されたは entryNameEncoding null entryNameEncoding エントリ名をバイトにエンコードするために使用されます。When you write to archive files and entryNameEncoding is set to a value other than null, the specified entryNameEncoding is used to encode the entry names into bytes. 言語エンコードフラグ (ローカルファイルヘッダーの汎用ビットフラグ) は、指定されたエンコードが UTF-8 エンコーディングの場合にのみ設定されます。The language encoding flag (in the general-purpose bit flag of the local file header) is set only when the specified encoding is a UTF-8 encoding.

適用対象