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, однако запись слишком велика, чтобы поместиться в памяти.
Комментарии
Если для параметра задано значение 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.
Применяется к
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 метода .
Если для параметра задано значение mode
Create, архив открывается с FileMode.CreateNew параметром в качестве значения режима файла. Если архив уже существует, IOException создается исключение .
Если для параметра задано значение mode
Update, архив открывается с FileMode.OpenOrCreate параметром в качестве значения режима файла. Если архив существует, он открывается. Существующие записи можно изменить и создать новые. Если архив не существует, создается новый архив; Однако создание ZIP-архива в Update режиме не так эффективно, как создание в Create режиме .