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

Одно из значений перечисления, указывающее действия, разрешенные для записей в открытом архиве.

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

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

Исключения

archiveFileName is 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

Комментарии

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

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

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

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

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);
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 is 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, но запись слишком велика, чтобы поместиться в память.

Комментарии

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

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

При установке mode параметра Updateархив открывается в 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.

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