ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory ZipFile.CreateFromDirectory Method

Définition

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié.Creates a zip archive that contains the files and directories from the specified directory.

Surcharges

CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String)

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié.Creates a zip archive that contains the files and directories from the specified directory.

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

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié, utilise le niveau de compression spécifié et inclut éventuellement le répertoire de base.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) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié, utilise le niveau de compression et l'encodage de caractères spécifiés pour les noms d'entrée et inclut éventuellement le répertoire de base.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) CreateFromDirectory(String, String) CreateFromDirectory(String, String) CreateFromDirectory(String, String)

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié.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)

Paramètres

sourceDirectoryName
String String String String

Chemin d'accès au répertoire à archiver, spécifié sous forme de chemin d'accès relatif ou absolu.The path to the directory to be archived, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

Chemin d'accès de l'archive à créer, spécifié sous forme de chemin d'accès relatif ou absolu.The path of the archive to be created, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

Exceptions

sourceDirectoryName ou destinationArchiveFileName est Empty, ne contient qu’un espace blanc ou contient au moins un caractère non valide.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName ou destinationArchiveFileName a la valeur null.sourceDirectoryName or destinationArchiveFileName is null.

Dans sourceDirectoryName ou destinationArchiveFileName, le chemin d’accès spécifié, le nom de fichier spécifié ou les deux dépassent la longueur maximale définie par le système.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName n’est pas valide ou n’existe pas (par exemple, il se trouve sur un lecteur non mappé).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName existe déjà.destinationArchiveFileName already exists.

ou-or- Un fichier dans le répertoire spécifié n’a pu être ouvert.A file in the specified directory could not be opened.

destinationArchiveFileName spécifie un répertoire.destinationArchiveFileName specifies a directory.

- ou --or- L’appelant n’a pas l’autorisation requise pour accéder au répertoire spécifié dans sourceDirectoryName ou dans le fichier spécifié dans destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contient un format non valide.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

ou-or- L’archive zip ne prend pas en charge l’écriture.The zip archive does not support writing.

Exemples

Cet exemple montre comment créer et extraire une archive zip à l’aide de ZipFile la classe.This example shows how to create and extract a zip archive by using the ZipFile class. Il compresse le contenu d’un dossier dans une archive zip, puis extrait ce contenu dans un nouveau dossier.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Pour utiliser la classe ZipFile, vous devez référencer l’assembly System.IO.Compression.FileSystem dans votre projet.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

Remarques

La structure de répertoires du système de fichiers est conservée dans l’archive.The directory structure from the file system is preserved in the archive. Si le répertoire est vide, une archive vide est créée.If the directory is empty, an empty archive is created. Cette surcharge de méthode n’inclut pas le répertoire de base dans l’archive et ne vous permet pas de spécifier un niveau de compression.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Si vous souhaitez inclure le répertoire de base ou spécifier un niveau de compression, appelez CreateFromDirectory(String, String, CompressionLevel, Boolean) la surcharge de méthode.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Si l’archive existe déjà, une IOException exception est levée.If the archive already exists, an IOException exception is thrown. Si une entrée portant le nom spécifié existe déjà dans l’archive, une deuxième entrée est créée avec un nom identique.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si un fichier du répertoire ne peut pas être ajouté à l’archive, l’archive est laissée incomplète et non valide, et la IOException méthode lève une exception.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) CreateFromDirectory(String, String, CompressionLevel, Boolean) CreateFromDirectory(String, String, CompressionLevel, Boolean)

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié, utilise le niveau de compression spécifié et inclut éventuellement le répertoire de base.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

Paramètres

sourceDirectoryName
String String String String

Chemin d'accès au répertoire à archiver, spécifié sous forme de chemin d'accès relatif ou absolu.The path to the directory to be archived, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

Chemin d'accès de l'archive à créer, spécifié sous forme de chemin d'accès relatif ou absolu.The path of the archive to be created, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel CompressionLevel CompressionLevel CompressionLevel

L'une des valeurs d'énumération qui indique s'il faut mettre l'accent sur rapidité ou la compression en créant l'entrée.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean Boolean

true pour inclure le nom de répertoire de sourceDirectoryName à la racine de l'archive ; false pour inclure uniquement le contenu du répertoire.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Exceptions

sourceDirectoryName ou destinationArchiveFileName est Empty, ne contient qu’un espace blanc ou contient au moins un caractère non valide.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName ou destinationArchiveFileName est null.sourceDirectoryName or destinationArchiveFileName is null.

Dans sourceDirectoryName ou destinationArchiveFileName, le chemin d’accès spécifié, le nom de fichier spécifié ou les deux dépassent la longueur maximale définie par le système.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName n’est pas valide ou n’existe pas (par exemple, il se trouve sur un lecteur non mappé).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName existe déjà.destinationArchiveFileName already exists.

- ou --or- Un fichier dans le répertoire spécifié n’a pu être ouvert.A file in the specified directory could not be opened.

destinationArchiveFileName spécifie un répertoire.destinationArchiveFileName specifies a directory.

- ou --or- L’appelant n’a pas l’autorisation requise pour accéder au répertoire spécifié dans sourceDirectoryName ou dans le fichier spécifié dans destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contient un format non valide.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

- ou --or- L’archive zip ne prend pas en charge l’écriture.The zip archive does not support writing.

Exemples

Cet exemple montre comment créer et extraire une archive zip à l’aide de ZipFile la classe.This example shows how to create and extract a zip archive by using the ZipFile class. Il compresse le contenu d’un dossier dans une archive zip, puis extrait ce contenu dans un nouveau dossier.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Lorsque vous compressez l’archive, le répertoire de base est inclus et le niveau de compression est défini pour insister sur la vitesse de l’opération sur l’efficacité.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. Pour utiliser la classe ZipFile, vous devez référencer l’assembly System.IO.Compression.FileSystem dans votre projet.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

Remarques

La structure de répertoires du système de fichiers est conservée dans l’archive.The directory structure from the file system is preserved in the archive. Si le répertoire est vide, une archive vide est créée.If the directory is empty, an empty archive is created. Utilisez cette surcharge de méthode pour spécifier le niveau de compression et s’il faut inclure le répertoire de base dans l’archive.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Si l’archive existe déjà, une IOException exception est levée.If the archive already exists, an IOException exception is thrown. Si une entrée portant le nom spécifié existe déjà dans l’archive, une deuxième entrée est créée avec un nom identique.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si un fichier du répertoire ne peut pas être ajouté à l’archive, l’archive est laissée incomplète et non valide, et la IOException méthode lève une exception.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) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

Crée une archive zip qui contient les fichiers et les répertoires du répertoire spécifié, utilise le niveau de compression et l'encodage de caractères spécifiés pour les noms d'entrée et inclut éventuellement le répertoire de base.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

Paramètres

sourceDirectoryName
String String String String

Chemin d'accès au répertoire à archiver, spécifié sous forme de chemin d'accès relatif ou absolu.The path to the directory to be archived, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

Chemin d'accès de l'archive à créer, spécifié sous forme de chemin d'accès relatif ou absolu.The path of the archive to be created, specified as a relative or absolute path. Un chemin d'accès relatif est interprété comme étant relatif au répertoire de travail actif.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel CompressionLevel CompressionLevel CompressionLevel

L'une des valeurs d'énumération qui indique s'il faut mettre l'accent sur rapidité ou la compression en créant l'entrée.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean Boolean

true pour inclure le nom de répertoire de sourceDirectoryName à la racine de l'archive ; false pour inclure uniquement le contenu du répertoire.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 Encoding Encoding Encoding

Encodage à utiliser lors de la lecture ou de l'écriture des noms d'entrée dans cette archive.The encoding to use when reading or writing entry names in this archive. Spécifie une valeur pour ce paramètre uniquement lorsqu'un encodage est obligatoire pour l'interopérabilité avec les outils et les bibliothèques d'archivage de zip qui ne prennent pas en charge l'encodage UTF-8 pour les noms d'entrée.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.

Exceptions

sourceDirectoryName ou destinationArchiveFileName est Empty, ne contient qu’un espace blanc ou contient au moins un caractère non valide.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

ou-or- entryNameEncoding a pour valeur un encodage Unicode autre qu’UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceDirectoryName ou destinationArchiveFileName est null.sourceDirectoryName or destinationArchiveFileName is null.

Dans sourceDirectoryName ou destinationArchiveFileName, le chemin d’accès spécifié, le nom de fichier spécifié ou les deux dépassent la longueur maximale définie par le système.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName n’est pas valide ou n’existe pas (par exemple, il se trouve sur un lecteur non mappé).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName existe déjà.destinationArchiveFileName already exists.

- ou --or- Un fichier dans le répertoire spécifié n’a pu être ouvert.A file in the specified directory could not be opened.

destinationArchiveFileName spécifie un répertoire.destinationArchiveFileName specifies a directory.

- ou --or- L’appelant n’a pas l’autorisation requise pour accéder au répertoire spécifié dans sourceDirectoryName ou dans le fichier spécifié dans destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName ou destinationArchiveFileName contient un format non valide.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

ou-or- L’archive zip ne prend pas en charge l’écriture.The zip archive does not support writing.

Remarques

La structure de répertoires du système de fichiers est conservée dans l’archive.The directory structure from the file system is preserved in the archive. Si le répertoire est vide, une archive vide est créée.If the directory is empty, an empty archive is created. Utilisez cette surcharge de méthode pour spécifier le niveau de compression et l’encodage de caractères, et s’il faut inclure le répertoire de base dans l’archive.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Si l’archive existe déjà, une IOException exception est levée.If the archive already exists, an IOException exception is thrown. Si une entrée portant le nom spécifié existe déjà dans l’archive, une deuxième entrée est créée avec un nom identique.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si un fichier du répertoire ne peut pas être ajouté à l’archive, l’archive est laissée incomplète et non valide, et la IOException méthode lève une exception.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.

Si entryNameEncoding a une valeur autre que null, les noms d’entrée sont encodés à l’aide de l’encodage spécifié.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Si l’encodage spécifié est UTF-8, l’indicateur d’encodage linguistique (dans l’indicateur de bit à usage général de l’en-tête de fichier local) est défini pour chaque entrée.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,

Si entryNameEncoding a la valeur null, les noms d’entrée sont encodés selon les règles suivantes:If entryNameEncoding is set to null, the entry names are encoded according to the following rules:

  • Pour les noms d’entrée qui contiennent des caractères en dehors de la plage ASCII, l’indicateur d’encodage de langue est défini et UTF-8 est utilisé pour encoder le nom de l’entrée.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.

  • Pour les noms d’entrée qui contiennent uniquement des caractères ASCII, l’indicateur d’encodage de langue est défini et la page de codes par défaut du système actuelle est utilisée pour encoder les noms d’entrée.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.

S’applique à