다음을 통해 공유


ZipFile.Open 메서드

정의

지정된 경로와 지정된 모드에서 ZIP 보관 위치를 엽니다.

오버로드

Open(String, ZipArchiveMode, Encoding)

지정된 모드의 지정된 경로에서 항목 이름에 대해 지정된 문자 인코딩을 사용하며 zip 보관 파일을 엽니다.

Open(String, ZipArchiveMode)

지정된 경로와 지정된 모드에서 ZIP 보관 위치를 엽니다.

Open(String, ZipArchiveMode, Encoding)

Source:
ZipFile.Create.cs
Source:
ZipFile.Create.cs
Source:
ZipFile.Create.cs

지정된 모드의 지정된 경로에서 항목 이름에 대해 지정된 문자 인코딩을 사용하며 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

열린 보관 파일의 엔트리에서 사용되는 동작을 지정하는 열거형 값 중 하나입니다.

entryNameEncoding
Encoding

이 아카이브에서 이름을 읽거나 쓰는 동안 사용할 인코딩입니다. 인코딩이 항목 이름에 대해 UTF-8 인코딩을 지원하지 않는 zip 보관 도구와 라이브러리를 사용하여 상호 운용성에 인코딩이 필요할 때만 이 매개 변수에 대한 값을 지정합니다.

반환

열린 zip 보관 위치입니다.

예외

archiveFileNameEmpty이거나, 공백만 포함하거나 또는 잘못된 문자를 하나 이상 포함하는 경우

또는

entryNameEncoding이 UTF-8이 아닌 유니코드 인코딩으로 설정된 경우

archiveFileName이(가) null인 경우

archiveFileName에서 지정된 경로, 파일 이름 또는 둘 다가 시스템에 정의된 최대 길이를 초과하는 경우

archiveFileName이 잘못되었거나 존재하지 않는 경우(예: 매핑되지 않은 드라이브의 경로를 지정한 경우)

archiveFileName을 열 수 없습니다.

또는

modeCreate로 설정되었지만 archiveFileName에 지정된 파일이 이미 있는 경우

또는

파일을 여는 동안 지정되지 않은 I/O 오류가 발생한 경우

archiveFileName은 디렉터리를 지정합니다.

또는

archiveFileName에 지정된 파일에 액세스하는 데 필요한 권한이 호출자에게 없는 경우

mode가 잘못된 값을 지정하는 경우

modeRead로 설정되었지만 archiveFileName에 지정된 파일이 없는 경우

archiveFileName에 잘못된 형식이 포함되어 있는 경우

archiveFileName을 ZIP 보관 위치로 해석할 수 없습니다.

또는

modeUpdate이고 엔트리는 없거나 손상되어 읽을 수 없습니다.

또는

modeUpdate이지만 엔트리가 너무 커서 메모리에 들어가지 않습니다.

설명

매개 변수Read를 로 mode 설정하면 를 파일 모드 값으로 사용하여 보관 파일이 열립니다FileMode.Open. 보관 파일이 없으면 예외가 FileNotFoundException throw됩니다. 매개 변수를 modeRead 설정하는 것은 메서드를 호출하는 OpenRead 것과 같습니다.

매개 변수Create를 로 mode 설정하면 를 파일 모드 값으로 사용하여 보관 파일이 열립니다FileMode.CreateNew. 보관 파일이 이미 있는 경우 이 IOException throw됩니다.

매개 변수Update를 로 mode 설정하면 를 파일 모드 값으로 사용하여 보관 파일이 열립니다FileMode.OpenOrCreate. 보관 파일이 있으면 열립니다. 기존 항목을 수정할 수 있으며 새 항목을 만들 수 있습니다. 보관 파일이 없으면 새 보관 파일이 만들어집니다. 그러나 zip 보관 Update 파일을 모드로 만드는 것은 모드에서 Create 만드는 것만큼 효율적이지 않습니다.

읽기 entryNameEncoding 위해 zip 보관 파일을 열고 로 설정 null하면 다음 규칙에 따라 항목 이름이 디코딩됩니다.

  • 언어 인코딩 플래그(로컬 파일 헤더의 범용 비트 플래그)가 설정되지 않은 경우 현재 시스템 기본 코드 페이지를 사용하여 항목 이름을 디코딩합니다.

  • 언어 인코딩 플래그가 설정되면 UTF-8을 사용하여 항목 이름을 디코딩합니다.

읽기 entryNameEncoding 위해 zip 보관 파일을 열고 이 아닌 null값으로 설정된 경우 항목 이름은 다음 규칙에 따라 디코딩됩니다.

  • 언어 인코딩 플래그가 설정되지 않은 경우 지정된 entryNameEncoding 가 항목 이름을 디코딩하는 데 사용됩니다.

  • 언어 인코딩 플래그가 설정되면 UTF-8을 사용하여 항목 이름을 디코딩합니다.

보관 파일에 entryNameEncoding 쓰고 로 설정된 null경우 항목 이름은 다음 규칙에 따라 인코딩됩니다.

  • ASCII 범위를 벗어난 문자를 포함하는 항목 이름의 경우 언어 인코딩 플래그가 설정되고 항목 이름은 UTF-8을 사용하여 인코딩됩니다.

  • ASCII 문자만 포함하는 항목 이름의 경우 언어 인코딩 플래그가 설정되지 않고 현재 시스템 기본 코드 페이지를 사용하여 항목 이름이 인코딩됩니다.

보관 파일에 entryNameEncoding 쓰고 이 아닌 null값으로 설정된 경우 지정된 entryNameEncoding 는 항목 이름을 바이트로 인코딩하는 데 사용됩니다. 언어 인코딩 플래그(로컬 파일 헤더의 범용 비트 플래그)는 지정된 인코딩이 UTF-8 인코딩인 경우에만 설정됩니다.

적용 대상

Open(String, ZipArchiveMode)

Source:
ZipFile.Create.cs
Source:
ZipFile.Create.cs
Source:
ZipFile.Create.cs

지정된 경로와 지정된 모드에서 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

열린 보관 파일의 엔트리에서 사용되는 동작을 지정하는 열거형 값 중 하나입니다.

반환

열린 zip 보관 위치입니다.

예외

archiveFileNameEmpty이거나, 공백만 포함하거나 또는 잘못된 문자를 하나 이상 포함하는 경우

archiveFileName이(가) null인 경우

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);
            }
        }
    }
}
open System.IO.Compression

let zipPath = @"c:\users\exampleuser\start.zip"
let extractPath = @"c:\users\exampleuser\extract"
let newFile = @"c:\users\exampleuser\NewFile.txt"

do
    use archive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
    archive.CreateEntryFromFile(newFile, "NewEntry.txt") |> ignore
    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

설명

매개 변수Readmode 로 설정하면 열거형에서 FileMode 를 파일 모드 값으로 사용하여 보관 파일이 열립니 Open 다. 보관 파일이 없으면 예외가 FileNotFoundException throw됩니다. 매개 변수를 modeRead 설정하는 것은 메서드를 호출하는 OpenRead 것과 같습니다.

매개 변수Create를 로 mode 설정하면 를 파일 모드 값으로 사용하여 보관 파일이 열립니다FileMode.CreateNew. 보관 파일이 이미 있는 경우 이 IOException throw됩니다.

매개 변수Update를 로 mode 설정하면 를 파일 모드 값으로 사용하여 보관 파일이 열립니다FileMode.OpenOrCreate. 보관 파일이 있으면 열립니다. 기존 항목을 수정할 수 있으며 새 항목을 만들 수 있습니다. 보관 파일이 없으면 새 보관 파일이 만들어집니다. 그러나 zip 보관 Update 파일을 모드로 만드는 것은 모드에서 Create 만드는 것만큼 효율적이지 않습니다.

적용 대상