ZipFile.CreateFromDirectory Metoda

Definice

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře.Creates a zip archive that contains the files and directories from the specified directory.

Přetížení

CreateFromDirectory(String, String)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře.Creates a zip archive that contains the files and directories from the specified directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře, používá zadanou úroveň komprese a volitelně zahrnuje základní adresář.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře, používá určenou úroveň komprese a kódování znaků pro zadání názvů a volitelně zahrnuje základní adresář.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

CreateFromDirectory(String, String)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře.Creates a zip archive that contains the files and directories from the specified directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);
static member CreateFromDirectory : string * string -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String)

Parametry

sourceDirectoryName
String

Cesta k adresáři, který má být archivován, zadaný jako relativní nebo absolutní cesta.The path to the directory to be archived, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Cesta k archivnímu adresáři, který se má vytvořit, zadaný jako relativní nebo absolutní cesta.The path of the archive to be created, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

Výjimky

sourceDirectoryNamenebo destinationArchiveFileName jeEmpty, obsahuje pouze prázdné znaky nebo obsahuje nejméně jeden neplatný znak.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryNamenebo destinationArchiveFileName je null.sourceDirectoryName or destinationArchiveFileName is null.

V sourceDirectoryName nebodestinationArchiveFileNameje zadaná cesta, název souboru nebo obojí větší než maximální délka definovaná systémem.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryNameje neplatný nebo neexistuje (například se nachází na nemapované jednotce).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileNamejiž existuje.destinationArchiveFileName already exists.

-nebo--or- Soubor v zadaném adresáři nešlo otevřít.A file in the specified directory could not be opened.

destinationArchiveFileNameUrčuje adresář.destinationArchiveFileName specifies a directory.

-nebo--or- Volající nemá požadovaná oprávnění pro přístup k adresáři určenému v sourceDirectoryName nebo v souboru určeném v. destinationArchiveFileNameThe caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryNamenebo destinationArchiveFileName obsahuje neplatný formát.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-nebo--or- Archiv zip nepodporuje zápis.The zip archive does not support writing.

Příklady

Tento příklad ukazuje, jak vytvořit a extrahovat archiv zip pomocí ZipFile třídy.This example shows how to create and extract a zip archive by using the ZipFile class. Komprimuje obsah složky do archivu zip a potom tento obsah extrahuje do nové složky.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Chcete-li ZipFile použít třídu, musíte odkazovat na System.IO.Compression.FileSystem sestavení v projektu.To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

using System;
using System.IO.Compression;

class Program
{
    static void Main(string[] args)
    {
        string startPath = @".\start";
        string zipPath = @".\result.zip";
        string extractPath = @".\extract";

        ZipFile.CreateFromDirectory(startPath, zipPath);

        ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
}
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = ".\start"
        Dim zipPath As String = ".\result.zip"
        Dim extractPath As String = ".\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Poznámky

Adresářová struktura ze systému souborů je zachována v archivu.The directory structure from the file system is preserved in the archive. Pokud je adresář prázdný, je vytvořen prázdný archiv.If the directory is empty, an empty archive is created. Toto přetížení metody nezahrnuje základní adresář v archivu a neumožňuje určit úroveň komprese.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Pokud chcete zahrnout základní adresář nebo zadat úroveň komprese, zavolejte CreateFromDirectory(String, String, CompressionLevel, Boolean) přetížení metody.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Pokud archiv již existuje, IOException je vyvolána výjimka.If the archive already exists, an IOException exception is thrown. Pokud položka se zadaným názvem již v archivu existuje, je vytvořena druhá položka se stejným názvem.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Pokud soubor v adresáři nelze přidat do archivu, archiv je ponechán neúplný a neplatný a metoda vyvolá IOException výjimku.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře, používá zadanou úroveň komprese a volitelně zahrnuje základní adresář.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool -> unit

Parametry

sourceDirectoryName
String

Cesta k adresáři, který má být archivován, zadaný jako relativní nebo absolutní cesta.The path to the directory to be archived, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Cesta k archivnímu adresáři, který se má vytvořit, zadaný jako relativní nebo absolutní cesta.The path of the archive to be created, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Jedna z hodnot výčtu, která označuje, zda má být při vytváření položky zdůrazněna rychlost nebo Efektivita komprese.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

trueChcete-li zahrnout název adresáře sourceDirectoryName z kořenového adresáře archivu; false Chcete-li zahrnout pouze obsah adresáře.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Výjimky

sourceDirectoryNamenebo destinationArchiveFileName jeEmpty, obsahuje pouze prázdné znaky nebo obsahuje nejméně jeden neplatný znak.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryNamenebo destinationArchiveFileName je null.sourceDirectoryName or destinationArchiveFileName is null.

V sourceDirectoryName nebodestinationArchiveFileNameje zadaná cesta, název souboru nebo obojí větší než maximální délka definovaná systémem.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryNameje neplatný nebo neexistuje (například se nachází na nemapované jednotce).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileNamejiž existuje.destinationArchiveFileName already exists.

-nebo--or- Soubor v zadaném adresáři nešlo otevřít.A file in the specified directory could not be opened.

destinationArchiveFileNameUrčuje adresář.destinationArchiveFileName specifies a directory.

-nebo--or- Volající nemá požadovaná oprávnění pro přístup k adresáři určenému v sourceDirectoryName nebo v souboru určeném v. destinationArchiveFileNameThe caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryNamenebo destinationArchiveFileName obsahuje neplatný formát.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-nebo--or- Archiv zip nepodporuje zápis.The zip archive does not support writing.

Příklady

Tento příklad ukazuje, jak vytvořit a extrahovat archiv zip pomocí ZipFile třídy.This example shows how to create and extract a zip archive by using the ZipFile class. Komprimuje obsah složky do archivu zip a potom tento obsah extrahuje do nové složky.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Při komprimaci archivu je zahrnut základní adresář a úroveň komprese je nastavena na zdůraznění rychlosti provozu při vyšší efektivitě.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. Chcete-li ZipFile použít třídu, musíte odkazovat na System.IO.Compression.FileSystem sestavení v projektu.To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string startPath = @"c:\example\start";
            string zipPath = @"c:\example\result.zip";
            string extractPath = @"c:\example\extract";

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = "c:\example\start"
        Dim zipPath As String = "c:\example\result.zip"
        Dim extractPath As String = "c:\example\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, True)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Poznámky

Adresářová struktura ze systému souborů je zachována v archivu.The directory structure from the file system is preserved in the archive. Pokud je adresář prázdný, je vytvořen prázdný archiv.If the directory is empty, an empty archive is created. Pomocí tohoto přetížení metody můžete určit úroveň komprese a to, jestli se má do archivu zahrnout základní adresář.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Pokud archiv již existuje, IOException je vyvolána výjimka.If the archive already exists, an IOException exception is thrown. Pokud položka se zadaným názvem již v archivu existuje, je vytvořena druhá položka se stejným názvem.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Pokud soubor v adresáři nelze přidat do archivu, archiv je ponechán neúplný a neplatný a metoda vyvolá IOException výjimku.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Vytvoří archiv zip, který obsahuje soubory a adresáře ze zadaného adresáře, používá určenou úroveň komprese a kódování znaků pro zadání názvů a volitelně zahrnuje základní adresář.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit

Parametry

sourceDirectoryName
String

Cesta k adresáři, který má být archivován, zadaný jako relativní nebo absolutní cesta.The path to the directory to be archived, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Cesta k archivnímu adresáři, který se má vytvořit, zadaný jako relativní nebo absolutní cesta.The path of the archive to be created, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Jedna z hodnot výčtu, která označuje, zda má být při vytváření položky zdůrazněna rychlost nebo Efektivita komprese.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

trueChcete-li zahrnout název adresáře sourceDirectoryName z kořenového adresáře archivu; false Chcete-li zahrnout pouze obsah adresáře.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

entryNameEncoding
Encoding

Kódování, které má být použito při čtení nebo zápisu názvů položek v tomto archivu.The encoding to use when reading or writing entry names in this archive. Zadejte hodnotu pro tento parametr pouze v případě, že je vyžadováno kódování pro interoperabilitu s nástroji a knihovnami archivu zip, které pro vstupní názvy nepodporují kódování UTF-8.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.

Výjimky

sourceDirectoryNamenebo destinationArchiveFileName jeEmpty, obsahuje pouze prázdné znaky nebo obsahuje nejméně jeden neplatný znak.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

-nebo--or- entryNameEncodingje nastaveno na kódování Unicode jiné než UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceDirectoryNamenebo destinationArchiveFileName je null.sourceDirectoryName or destinationArchiveFileName is null.

V sourceDirectoryName nebodestinationArchiveFileNameje zadaná cesta, název souboru nebo obojí větší než maximální délka definovaná systémem.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryNameje neplatný nebo neexistuje (například se nachází na nemapované jednotce).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileNamejiž existuje.destinationArchiveFileName already exists.

-nebo--or- Soubor v zadaném adresáři nešlo otevřít.A file in the specified directory could not be opened.

destinationArchiveFileNameUrčuje adresář.destinationArchiveFileName specifies a directory.

-nebo--or- Volající nemá požadovaná oprávnění pro přístup k adresáři určenému v sourceDirectoryName nebo v souboru určeném v. destinationArchiveFileNameThe caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryNamenebo destinationArchiveFileName obsahuje neplatný formát.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-nebo--or- Archiv zip nepodporuje zápis.The zip archive does not support writing.

Poznámky

Adresářová struktura ze systému souborů je zachována v archivu.The directory structure from the file system is preserved in the archive. Pokud je adresář prázdný, je vytvořen prázdný archiv.If the directory is empty, an empty archive is created. Pomocí tohoto přetížení metody můžete určit úroveň komprese a kódování znaků a zda se má do archivu zahrnout základní adresář.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Pokud archiv již existuje, IOException je vyvolána výjimka.If the archive already exists, an IOException exception is thrown. Pokud položka se zadaným názvem již v archivu existuje, je vytvořena druhá položka se stejným názvem.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Pokud soubor v adresáři nelze přidat do archivu, archiv je ponechán neúplný a neplatný a metoda vyvolá IOException výjimku.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

Pokud entryNameEncoding je hodnota nastavena na jinou hodnotu než null, názvy položek jsou zakódovány pomocí zadaného kódování.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Je-li zadané kódování UTF-8, je pro každou položku nastaven příznak kódování jazyka (v hlavičce bitové kopie pro obecné účely).If the specified encoding is a UTF-8, the language encoding flag (in the general-purpose bit flag of the local file header) is set for each entry,

Pokud entryNameEncoding je nastavená nullna, názvy položek se zakódují podle následujících pravidel:If entryNameEncoding is set to null, the entry names are encoded according to the following rules:

  • U názvů zadání, které obsahují znaky mimo rozsah ASCII, je nastaven příznak kódování jazyka a kódování UTF-8 slouží ke kódování názvu položky.For entry names that contain characters outside the ASCII range, the language encoding flag is set, and UTF-8 is used to encode the entry name.

  • U názvů zadání, které obsahují pouze znaky ASCII, je nastaven příznak kódování jazyka a aktuální výchozí systémová znaková stránka slouží ke kódování názvů položek.For entry names that contain only ASCII characters, the language encoding flag is set, and the current system default code page is used to encode the entry names.

Platí pro