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

Definición

Crea un archivo zip que contiene los archivos y directorios del directorio especificado.Creates a zip archive that contains the files and directories from the specified directory.

Sobrecargas

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

Crea un archivo zip que contiene los archivos y directorios del directorio especificado.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)

Crea un archivo zip que contiene los archivos y directorios del directorio especificado, utiliza el nivel de compresión especificado y, opcionalmente, incluye el directorio 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)

Crea un archivo zip que contiene los archivos y directorios del directorio especificado, utiliza el nivel de compresión y la codificación de caracteres especificados para los nombres de entrada y, opcionalmente, incluye el directorio 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)

Crea un archivo zip que contiene los archivos y directorios del directorio especificado.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)

Parámetros

sourceDirectoryName
String String String String

La ruta de acceso al directorio que se va a almacenar, especificada como una ruta de acceso relativa o absoluta.The path to the directory to be archived, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

La ruta de acceso del archivo que se creará, especificada como una ruta de acceso relativa o absoluta.The path of the archive to be created, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

Excepciones

sourceDirectoryName o destinationArchiveFileName es Empty, contiene solo espacios en blanco o contiene al menos un carácter no válido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName o destinationArchiveFileName es null.sourceDirectoryName or destinationArchiveFileName is null.

En sourceDirectoryName o destinationArchiveFileName, la ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName no es válido o no existe (por ejemplo, se encuentra en una unidad no asignada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName ya existe.destinationArchiveFileName already exists.

-o bien--or- No se pudo abrir un archivo en el directorio especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica un directorio.destinationArchiveFileName specifies a directory.

-o bien--or- El llamador no tiene el permiso necesario para tener acceso al directorio especificado en sourceDirectoryName o el archivo especificado en 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 no válido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-o bien--or- El archivo zip no admite escritura.The zip archive does not support writing.

Ejemplos

En este ejemplo se muestra cómo crear y extraer un archivo zip mediante el ZipFile clase.This example shows how to create and extract a zip archive by using the ZipFile class. Comprime el contenido de una carpeta en un archivo zip y, a continuación, extrae el contenido a una nueva carpeta.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Para usar la clase ZipFile, debe hacer referencia al ensamblado System.IO.Compression.FileSystem del proyecto.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

Comentarios

Se conserva la estructura de directorios del sistema de archivos en el archivo.The directory structure from the file system is preserved in the archive. Si el directorio está vacío, se crea un archivo vacío.If the directory is empty, an empty archive is created. Esta sobrecarga del método no incluye el directorio base en el archivo y no permite especificar un nivel de compresión.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Si desea incluir el directorio base o especificar una llamada a nivel de compresión del CreateFromDirectory(String, String, CompressionLevel, Boolean) sobrecarga del método.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Si ya existe el archivo, un IOException es una excepción.If the archive already exists, an IOException exception is thrown. Si ya existe una entrada con el nombre especificado en el archivo, se crea una segunda entrada con un nombre idéntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si no se puede agregar un archivo en el directorio al archivo, el archivo quedo incompleto y no válidos y el método produce una IOException excepción.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)

Crea un archivo zip que contiene los archivos y directorios del directorio especificado, utiliza el nivel de compresión especificado y, opcionalmente, incluye el directorio 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

Parámetros

sourceDirectoryName
String String String String

La ruta de acceso al directorio que se va a almacenar, especificada como una ruta de acceso relativa o absoluta.The path to the directory to be archived, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

La ruta de acceso del archivo que se creará, especificada como una ruta de acceso relativa o absoluta.The path of the archive to be created, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel CompressionLevel CompressionLevel CompressionLevel

Uno de los valores de enumeración que indica si se va a hacer hincapié en la velocidad o en la eficacia de compresión al crear la entrada.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean Boolean

true para incluir el nombre de directorio de sourceDirectoryName en la raíz del archivo; false para incluir solo el contenido del directorio.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Excepciones

sourceDirectoryName o destinationArchiveFileName es Empty, contiene solo espacios en blanco o contiene al menos un carácter no válido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

sourceDirectoryName o destinationArchiveFileName es null.sourceDirectoryName or destinationArchiveFileName is null.

En sourceDirectoryName o destinationArchiveFileName, la ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName no es válido o no existe (por ejemplo, se encuentra en una unidad no asignada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName ya existe.destinationArchiveFileName already exists.

-o bien--or- No se pudo abrir un archivo en el directorio especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica un directorio.destinationArchiveFileName specifies a directory.

-o bien--or- El llamador no tiene el permiso necesario para tener acceso al directorio especificado en sourceDirectoryName o el archivo especificado en 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 no válido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-o bien--or- El archivo zip no admite escritura.The zip archive does not support writing.

Ejemplos

En este ejemplo se muestra cómo crear y extraer un archivo zip mediante el ZipFile clase.This example shows how to create and extract a zip archive by using the ZipFile class. Comprime el contenido de una carpeta en un archivo zip y, a continuación, extrae el contenido a una nueva carpeta.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Al comprimir el archivo, se incluye el directorio base y el nivel de compresión se establece para hacer hincapié en la velocidad de la operación a través de la eficacia.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. Para usar la clase ZipFile, debe hacer referencia al ensamblado System.IO.Compression.FileSystem del proyecto.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

Comentarios

Se conserva la estructura de directorios del sistema de archivos en el archivo.The directory structure from the file system is preserved in the archive. Si el directorio está vacío, se crea un archivo vacío.If the directory is empty, an empty archive is created. Utilice esta sobrecarga del método para especificar el nivel de compresión y si se debe incluir el directorio base en el archivo.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Si ya existe el archivo, un IOException es una excepción.If the archive already exists, an IOException exception is thrown. Si ya existe una entrada con el nombre especificado en el archivo, se crea una segunda entrada con un nombre idéntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si no se puede agregar un archivo en el directorio al archivo, el archivo quedo incompleto y no válidos y el método produce una IOException excepción.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)

Crea un archivo zip que contiene los archivos y directorios del directorio especificado, utiliza el nivel de compresión y la codificación de caracteres especificados para los nombres de entrada y, opcionalmente, incluye el directorio 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

Parámetros

sourceDirectoryName
String String String String

La ruta de acceso al directorio que se va a almacenar, especificada como una ruta de acceso relativa o absoluta.The path to the directory to be archived, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String String String String

La ruta de acceso del archivo que se creará, especificada como una ruta de acceso relativa o absoluta.The path of the archive to be created, specified as a relative or absolute path. Una ruta de acceso relativa se interpreta en relación con el directorio de trabajo actual.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel CompressionLevel CompressionLevel CompressionLevel

Uno de los valores de enumeración que indica si se va a hacer hincapié en la velocidad o en la eficacia de compresión al crear la entrada.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean Boolean Boolean Boolean

true para incluir el nombre de directorio de sourceDirectoryName en la raíz del archivo; false para incluir solo el contenido del directorio.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

Codificación que se va a usar al leer o escribir nombres de entrada en este archivo.The encoding to use when reading or writing entry names in this archive. Especifique un valor para este parámetro únicamente cuando se necesite una codificación para la interoperabilidad con herramientas y bibliotecas de archivos zip que no admiten la codificación UTF-8 para los nombres de entrada.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.

Excepciones

sourceDirectoryName o destinationArchiveFileName es Empty, contiene solo espacios en blanco o contiene al menos un carácter no válido.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

-o bien--or- entryNameEncoding se establece en Unicode codificación distintos de UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

sourceDirectoryName o destinationArchiveFileName es null.sourceDirectoryName or destinationArchiveFileName is null.

En sourceDirectoryName o destinationArchiveFileName, la ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

sourceDirectoryName no es válido o no existe (por ejemplo, se encuentra en una unidad no asignada).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

destinationArchiveFileName ya existe.destinationArchiveFileName already exists.

-o bien--or- No se pudo abrir un archivo en el directorio especificado.A file in the specified directory could not be opened.

destinationArchiveFileName especifica un directorio.destinationArchiveFileName specifies a directory.

-o bien--or- El llamador no tiene el permiso necesario para tener acceso al directorio especificado en sourceDirectoryName o el archivo especificado en 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 no válido.sourceDirectoryName or destinationArchiveFileName contains an invalid format.

-o bien--or- El archivo zip no admite escritura.The zip archive does not support writing.

Comentarios

Se conserva la estructura de directorios del sistema de archivos en el archivo.The directory structure from the file system is preserved in the archive. Si el directorio está vacío, se crea un archivo vacío.If the directory is empty, an empty archive is created. Utilice esta sobrecarga del método para especificar el nivel de compresión y codificación de caracteres y si se debe incluir el directorio base en el archivo.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Si ya existe el archivo, un IOException es una excepción.If the archive already exists, an IOException exception is thrown. Si ya existe una entrada con el nombre especificado en el archivo, se crea una segunda entrada con un nombre idéntico.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Si no se puede agregar un archivo en el directorio al archivo, el archivo quedo incompleto y no válidos y el método produce una IOException excepción.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 se establece en un valor distinto null, los nombres de entrada se codifican mediante la codificación especificada.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Si la codificación especificada es un UTF-8, el lenguaje de codificación de marca (en el indicador de uso general de bits del encabezado del archivo local) se establece para cada entrada,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 está establecido en null, los nombres de entrada están codificados según las reglas siguientes:If entryNameEncoding is set to null, the entry names are encoded according to the following rules:

  • Para los nombres de entrada que contienen caracteres fuera del intervalo ASCII, se establece la marca de codificación de idioma y UTF-8 se usa para codificar el nombre de la entrada.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.

  • Para los nombres de entrada que contienen únicamente caracteres ASCII, se establece la marca de codificación de idioma y la página de códigos predeterminada actual se usa para codificar los nombres de entrada.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.

Se aplica a