ZipFile.CreateFromDirectory Metodo

Definizione

Crea un archivio ZIP che contiene i file e le directory della directory specificata.Creates a zip archive that contains the files and directories from the specified directory.

Overload

CreateFromDirectory(String, String)

Crea un archivio ZIP che contiene i file e le directory della directory specificata.Creates a zip archive that contains the files and directories from the specified directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Crea un archivio ZIP che contiene i file e le directory della directory specificata, utilizza il livello di compressione specificato e facoltativamente include la directory di 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)

Crea un archivio ZIP che contiene i file e le directory della directory specificata, utilizza il livello di compressione e la codifica dei caratteri specificati per i nomi di voce e facoltativamente include la directory di 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)

Crea un archivio ZIP che contiene i file e le directory della directory specificata.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)

Parametri

sourceDirectoryName
String

Percorso della directory da archiviare, specificato come percorso relativo o assoluto.The path to the directory to be archived, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Percorso dell'archivio da creare, specificato come percorso relativo o assoluto.The path of the archive to be created, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

Eccezioni

sourceDirectoryName o destinationArchiveFileName è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName o destinationArchiveFileName è null.sourceDirectoryName or destinationArchiveFileName is null.

In sourceDirectoryName o destinationArchiveFileName, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName esiste già.destinationArchiveFileName already exists.

-oppure--or- Impossibile aprire un file nella directory specificata.A file in the specified directory could not be opened.

destinationArchiveFileName specifica una directory.destinationArchiveFileName specifies a directory.

In alternativa-or- Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName o al al file specificato in destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName o destinationArchiveFileName contiene un formato non valido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

In alternativa-or- L'archivio ZIP non supporta la scrittura.The zip archive does not support writing.

Esempi

Questo esempio illustra come creare ed estrarre un archivio zip usando la ZipFile classe.This example shows how to create and extract a zip archive by using the ZipFile class. Comprime il contenuto di una cartella in un archivio zip e quindi estrae il contenuto in una nuova cartella.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Per usare la classe ZipFile, è necessario referenziare l'assembly System.IO.Compression.FileSystem nel progetto.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

Commenti

La struttura di directory del file system viene mantenuta nell'archivio.The directory structure from the file system is preserved in the archive. Se la directory è vuota, viene creato un archivio vuoto.If the directory is empty, an empty archive is created. Questo overload del metodo non include la directory di base nell'archivio e non consente di specificare un livello di compressione.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Se si desidera includere la directory di base o specificare un livello di compressione, chiamare CreateFromDirectory(String, String, CompressionLevel, Boolean) l'overload del metodo.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Se l'archivio esiste già, viene IOException generata un'eccezione.If the archive already exists, an IOException exception is thrown. Se nell'archivio esiste già una voce con il nome specificato, viene creata una seconda voce con un nome identico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Se non è possibile aggiungere un file nella directory all'archivio, l'archivio rimane incompleto e non è valido e il metodo genera un' IOException eccezione.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)

Crea un archivio ZIP che contiene i file e le directory della directory specificata, utilizza il livello di compressione specificato e facoltativamente include la directory di 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

Parametri

sourceDirectoryName
String

Percorso della directory da archiviare, specificato come percorso relativo o assoluto.The path to the directory to be archived, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Percorso dell'archivio da creare, specificato come percorso relativo o assoluto.The path of the archive to be created, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

true per includere il nome della directory da sourceDirectoryName nella directory radice dell'archivio; false per includere solo il contenuto della directory.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Eccezioni

sourceDirectoryName o destinationArchiveFileName è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName o destinationArchiveFileName è null.sourceDirectoryName or destinationArchiveFileName is null.

In sourceDirectoryName o destinationArchiveFileName, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName esiste già.destinationArchiveFileName already exists.

-oppure--or- Impossibile aprire un file nella directory specificata.A file in the specified directory could not be opened.

destinationArchiveFileName specifica una directory.destinationArchiveFileName specifies a directory.

In alternativa-or- Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName o al al file specificato in destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName o destinationArchiveFileName contiene un formato non valido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-oppure--or- L'archivio ZIP non supporta la scrittura.The zip archive does not support writing.

Esempi

Questo esempio illustra come creare ed estrarre un archivio zip usando la ZipFile classe.This example shows how to create and extract a zip archive by using the ZipFile class. Comprime il contenuto di una cartella in un archivio zip e quindi estrae il contenuto in una nuova cartella.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Quando si comprime l'archivio, la directory di base è inclusa e il livello di compressione è impostato in modo da evidenziare la velocità dell'operazione rispetto all'efficienza.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. Per usare la classe ZipFile, è necessario referenziare l'assembly System.IO.Compression.FileSystem nel progetto.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

Commenti

La struttura di directory del file system viene mantenuta nell'archivio.The directory structure from the file system is preserved in the archive. Se la directory è vuota, viene creato un archivio vuoto.If the directory is empty, an empty archive is created. Utilizzare questo overload del metodo per specificare il livello di compressione e se includere la directory di base nell'archivio.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Se l'archivio esiste già, viene IOException generata un'eccezione.If the archive already exists, an IOException exception is thrown. Se nell'archivio esiste già una voce con il nome specificato, viene creata una seconda voce con un nome identico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Se non è possibile aggiungere un file nella directory all'archivio, l'archivio rimane incompleto e non è valido e il metodo genera un' IOException eccezione.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)

Crea un archivio ZIP che contiene i file e le directory della directory specificata, utilizza il livello di compressione e la codifica dei caratteri specificati per i nomi di voce e facoltativamente include la directory di 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

Parametri

sourceDirectoryName
String

Percorso della directory da archiviare, specificato come percorso relativo o assoluto.The path to the directory to be archived, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Percorso dell'archivio da creare, specificato come percorso relativo o assoluto.The path of the archive to be created, specified as a relative or absolute path. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

true per includere il nome della directory da sourceDirectoryName nella directory radice dell'archivio; false per includere solo il contenuto della directory.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

La codifica da utilizzare durante la lettura o la scrittura dei nomi delle voci in questo archivio.The encoding to use when reading or writing entry names in this archive. Specificare un valore per il parametro solo quando una codifica è obbligatoria per l'interoperabilità con gli strumenti e le librerie dell'archivio ZIP che non supportano la codifica UTF-8 per i nomi di voce.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.

Eccezioni

sourceDirectoryName o destinationArchiveFileName è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

-oppure--or- entryNameEncoding è impostato su una codifica Unicode diversa da UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceDirectoryName o destinationArchiveFileName è null.sourceDirectoryName or destinationArchiveFileName is null.

In sourceDirectoryName o destinationArchiveFileName, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName esiste già.destinationArchiveFileName already exists.

-oppure--or- Impossibile aprire un file nella directory specificata.A file in the specified directory could not be opened.

destinationArchiveFileName specifica una directory.destinationArchiveFileName specifies a directory.

-oppure--or- Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName o al al file specificato in destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

sourceDirectoryName o destinationArchiveFileName contiene un formato non valido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

In alternativa-or- L'archivio ZIP non supporta la scrittura.The zip archive does not support writing.

Commenti

La struttura di directory del file system viene mantenuta nell'archivio.The directory structure from the file system is preserved in the archive. Se la directory è vuota, viene creato un archivio vuoto.If the directory is empty, an empty archive is created. Utilizzare questo overload del metodo per specificare il livello di compressione e la codifica dei caratteri e se includere la directory di base nell'archivio.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Se l'archivio esiste già, viene IOException generata un'eccezione.If the archive already exists, an IOException exception is thrown. Se nell'archivio esiste già una voce con il nome specificato, viene creata una seconda voce con un nome identico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Se non è possibile aggiungere un file nella directory all'archivio, l'archivio rimane incompleto e non è valido e il metodo genera un' IOException eccezione.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.

Se entryNameEncoding è impostato su un valore nulldiverso da, i nomi di voce vengono codificati utilizzando la codifica specificata.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Se la codifica specificata è UTF-8, il flag di codifica della lingua (nel flag di bit per utilizzo generico dell'intestazione del file locale) viene impostato per ogni voce,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,

Se entryNameEncoding è impostato su null, i nomi di voce vengono codificati in base alle regole seguenti:If entryNameEncoding is set to null, the entry names are encoded according to the following rules:

  • Per i nomi di voce che contengono caratteri non compresi nell'intervallo ASCII, viene impostato il flag di codifica della lingua e UTF-8 viene usato per codificare il nome della voce.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.

  • Per i nomi di voce che contengono solo caratteri ASCII, viene impostato il flag di codifica della lingua e la tabella codici predefinita del sistema corrente viene usata per codificare i nomi di voce.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.

Si applica a