Leer en inglés

Compartir a través de


File.Copy Método

Definición

Copia un archivo existente en un archivo nuevo.

Sobrecargas

Copy(String, String)

Copia un archivo existente en un archivo nuevo. No se permite sobrescribir un archivo con el mismo nombre.

Copy(String, String, Boolean)

Copia un archivo existente en un archivo nuevo. Se permite sobrescribir un archivo con el mismo nombre.

Copy(String, String)

Source:
File.cs
Source:
File.cs
Source:
File.cs

Copia un archivo existente en un archivo nuevo. No se permite sobrescribir un archivo con el mismo nombre.

C#
public static void Copy (string sourceFileName, string destFileName);

Parámetros

sourceFileName
String

Archivo que se va a copiar.

destFileName
String

Nombre del archivo de destino. No puede ser un directorio o un archivo existente.

Excepciones

El autor de la llamada no tiene el permiso necesario.

sourceFileName o destFileName es una cadena de longitud cero, solo contiene espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar caracteres no válidos mediante el método GetInvalidPathChars().

-o-

sourceFileName o destFileName especifica un directorio.

sourceFileName o destFileName es null.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

La ruta de acceso especificada en sourceFileName o destFileName no es válida (por ejemplo, está en una unidad no asignada).

no se encontró sourceFileName.

destFileName existe.

-o-

Se ha producido un error de E/S.

sourceFileName o destFileName tiene un formato no válido.

Ejemplos

En el ejemplo siguiente se copian archivos en la carpeta de copia de seguridad C:\archives\2008. Usa las dos sobrecargas del método Copy de la siguiente manera:

  • Primero usa la sobrecarga del método File.Copy(String, String) para copiar archivos de texto (.txt). El código muestra que esta sobrecarga no permite sobrescribir archivos que ya se copiaron.

  • A continuación, usa la sobrecarga del método File.Copy(String, String, Boolean) para copiar imágenes (archivos.jpg). El código muestra que esta sobrecarga permite sobrescribir archivos que ya se han copiado.

C#
string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Comentarios

Este método es equivalente a la sobrecarga del método Copy(String, String, Boolean) con el parámetro overwrite establecido en false.

Los parámetros sourceFileName y destFileName pueden especificar información de ruta de acceso relativa o absoluta. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Para obtener el directorio de trabajo actual, consulte el método Directory.GetCurrentDirectory. Este método no admite caracteres comodín en los parámetros.

Los atributos del archivo original se conservan en el archivo copiado.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Copy(String, String, Boolean)

Source:
File.cs
Source:
File.cs
Source:
File.cs

Copia un archivo existente en un archivo nuevo. Se permite sobrescribir un archivo con el mismo nombre.

C#
public static void Copy (string sourceFileName, string destFileName, bool overwrite);

Parámetros

sourceFileName
String

Archivo que se va a copiar.

destFileName
String

Nombre del archivo de destino. No puede ser un directorio.

overwrite
Boolean

true si el archivo de destino debe reemplazarse si ya existe; de lo contrario, false.

Excepciones

El autor de la llamada no tiene el permiso necesario.

-o-

destFileName es de solo lectura.

-o-

overwrite es true, destFileName existe y está oculto, pero sourceFileName no está oculto.

sourceFileName o destFileName es una cadena de longitud cero, solo contiene espacios en blanco o contiene uno o varios caracteres no válidos. Puede consultar caracteres no válidos mediante el método GetInvalidPathChars().

-o-

sourceFileName o destFileName especifica un directorio.

sourceFileName o destFileName es null.

La ruta de acceso especificada, el nombre de archivo o ambos superan la longitud máxima definida por el sistema.

La ruta de acceso especificada en sourceFileName o destFileName no es válida (por ejemplo, está en una unidad no asignada).

no se encontró sourceFileName.

destFileName existe y overwrite es false.

-o-

Se ha producido un error de E/S.

sourceFileName o destFileName tiene un formato no válido.

Ejemplos

En el ejemplo siguiente se copian archivos en la carpeta de copia de seguridad C:\archives\2008. Usa las dos sobrecargas del método Copy de la siguiente manera:

  • Primero usa la sobrecarga del método File.Copy(String, String) para copiar archivos de texto (.txt). El código muestra que esta sobrecarga no permite sobrescribir archivos que ya se copiaron.

A continuación, usa la sobrecarga del método File.Copy(String, String, Boolean) para copiar imágenes (archivos.jpg). El código muestra que esta sobrecarga permite sobrescribir archivos que ya se han copiado.

C#
string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Comentarios

Los parámetros sourceFileName y destFileName pueden especificar información de ruta de acceso relativa o absoluta. La información de ruta de acceso relativa se interpreta como relativa al directorio de trabajo actual. Este método no admite caracteres comodín en los parámetros.

Los atributos del archivo original se conservan en el archivo copiado.

Para obtener una lista de las tareas comunes de E/S, consulte Tareas de E/S comunes.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0