Поделиться через


ZipFile.Open Метод

Определение

Открывает ZIP-архив по указанному пути и в заданном режиме.

Перегрузки

Open(String, ZipArchiveMode, Encoding)

Открывает ZIP-архив по указанному пути в указанном режиме и с использованием указанной кодировки символов для имен записей.

Open(String, ZipArchiveMode)

Открывает ZIP-архив по указанному пути и в заданном режиме.

Open(String, ZipArchiveMode, Encoding)

Исходный код:
ZipFile.Create.cs
Исходный код:
ZipFile.Create.cs
Исходный код:
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

Кодирование, используемое при чтении или записи имен записей в этом архиве. Задайте значение для этого параметра, только если кодирование требуется для взаимодействия с инструментами и библиотеками ZIP-архива, которые не поддерживают кодирование UTF-8 для имен записей.

Возвращаемое значение

Открытый ZIP-архив.

Исключения

archiveFileName имеет значение Empty, содержит только пробел или по крайней мере один недопустимый символ.

-или-

entryNameEncoding установлено на кодировку Юникода, отличное от UTF-8.

archiveFileName имеет значение null.

В archiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.

Параметр archiveFileName недопустим или не существует (например, он соответствует неподключенному диску).

Не удалось открыть archiveFileName.

-или-

mode имеет значение Create, однако файл, указанный в archiveFileName, уже существует.

-или-

При открытии файла произошла неуказанная ошибка ввода-вывода.

Параметр archiveFileName задает каталог.

-или-

У вызывающего оператора отсутствует разрешение на доступ к файлу, указанному в параметре archiveFileName.

Параметр mode содержит недопустимое значение.

mode имеет значение Read, однако файл, указанный в archiveFileName, не найден.

archiveFileName содержит недопустимый формат.

archiveFileName не может интерпретироваться как ZIP-архив.

-или-

mode имеет значение Update, однако запись отсутствует в архиве или повреждена и не может быть прочитана.

-или-

mode имеет значение Update, однако запись слишком велика, чтобы поместиться в памяти.

Комментарии

Если для параметра задано значение modeRead, архив открывается с FileMode.Open параметром в качестве значения режима файла. Если архив не существует, FileNotFoundException возникает исключение. mode Задание для параметра значения Read эквивалентно вызову OpenRead метода .

Если для параметра задано значение modeCreate, архив открывается с FileMode.CreateNew параметром в качестве значения режима файла. Если архив уже существует, IOException создается исключение .

Если для параметра задано значение modeUpdate, архив открывается с FileMode.OpenOrCreate параметром в качестве значения режима файла. Если архив существует, он открывается. Существующие записи можно изменить и создать новые. Если архив не существует, создается новый архив; Однако создание ZIP-архива в Update режиме не так эффективно, как создание в Create режиме .

Если вы открываете ZIP-архивный файл для чтения и entryNameEncoding имеете значение null, имена записей декодируются в соответствии со следующими правилами:

  • Если флаг кодировки языка (в битовом флаге общего назначения заголовка локального файла) не задан, для декодирования имени записи используется текущая системная кодовая страница по умолчанию.

  • Если установлен флаг кодировки языка, для декодирования имени записи используется UTF-8.

При открытии ZIP-архивного файла для чтения и entryNameEncoding для параметра задано значение, отличное nullот , имена записей декодируются в соответствии со следующими правилами:

  • Если флаг кодировки языка не задан, указанный entryNameEncoding используется для декодирования имени записи.

  • Если установлен флаг кодировки языка, для декодирования имени записи используется UTF-8.

При записи в архивные файлы и entryNameEncoding для параметра задано значение null, имена записей кодируются в соответствии со следующими правилами:

  • Для имен записей, содержащих символы за пределами диапазона ASCII, устанавливается флаг кодировки языка, а имена записей кодируются с помощью UTF-8.

  • Для имен записей, содержащих только символы ASCII, флаг кодировки языка не установлен, а имена записей кодируются с помощью текущей системной кодовой страницы по умолчанию.

При записи в архивные файлы и entryNameEncoding для параметра задано значение, отличное nullот , указанное entryNameEncoding используется для кодирования имен записей в байтах. Флаг кодировки языка (в битовом флаге общего назначения заголовка локального файла) устанавливается только в том случае, если указанная кодировка является кодировкой UTF-8.

Применяется к

Open(String, ZipArchiveMode)

Исходный код:
ZipFile.Create.cs
Исходный код:
ZipFile.Create.cs
Исходный код:
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-архив.

Исключения

archiveFileName имеет значение Empty, содержит только пробел или по крайней мере один недопустимый символ.

archiveFileName имеет значение null.

В archiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.

Параметр archiveFileName недопустим или не существует (например, он соответствует неподключенному диску).

Не удалось открыть archiveFileName.

-или-

mode имеет значение Create, однако файл, указанный в archiveFileName, уже существует.

-или-

При открытии файла произошла неуказанная ошибка ввода-вывода.

Параметр archiveFileName задает каталог.

-или-

У вызывающего оператора отсутствует разрешение на доступ к файлу, указанному в параметре archiveFileName.

Параметр mode содержит недопустимое значение.

mode имеет значение Read, однако файл, указанный в archiveFileName, не найден.

archiveFileName содержит недопустимый формат.

archiveFileName не может интерпретироваться как ZIP-архив.

-или-

mode имеет значение Update, однако запись отсутствует в архиве или повреждена и не может быть прочитана.

-или-

mode имеет значение Update, однако запись слишком велика, чтобы поместиться в памяти.

Примеры

В следующем примере показано, как открыть 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 , архив открывается с Open помощью из перечисления FileMode в качестве значения режима файла. Если архив не существует, FileNotFoundException возникает исключение. mode Задание для параметра значения Read эквивалентно вызову OpenRead метода .

Если для параметра задано значение modeCreate, архив открывается с FileMode.CreateNew параметром в качестве значения режима файла. Если архив уже существует, IOException создается исключение .

Если для параметра задано значение modeUpdate, архив открывается с FileMode.OpenOrCreate параметром в качестве значения режима файла. Если архив существует, он открывается. Существующие записи можно изменить и создать новые. Если архив не существует, создается новый архив; Однако создание ZIP-архива в Update режиме не так эффективно, как создание в Create режиме .

Применяется к