File.Copy Method

Definition

Copie un fichier existant vers un nouveau fichier.Copies an existing file to a new file.

Overloads

Copy(String, String)

Copie un fichier existant vers un nouveau fichier.Copies an existing file to a new file. Le remplacement d'un fichier du même nom n'est pas autorisé.Overwriting a file of the same name is not allowed.

Copy(String, String, Boolean)

Copie un fichier existant vers un nouveau fichier.Copies an existing file to a new file. Le remplacement d'un fichier du même nom est autorisé.Overwriting a file of the same name is allowed.

Copy(String, String)

Copie un fichier existant vers un nouveau fichier.Copies an existing file to a new file. Le remplacement d'un fichier du même nom n'est pas autorisé.Overwriting a file of the same name is not allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName);
public static void Copy (string sourceFileName, string destFileName);
static member Copy : string * string -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String)

Parameters

sourceFileName
String

Fichier à copier.The file to copy.

destFileName
String

Nom du fichier de destination.The name of the destination file. Celui-ci ne peut pas être un répertoire ou un fichier existant.This cannot be a directory or an existing file.

Exceptions

L'appelant ne possède pas l'autorisation requise.The caller does not have the required permission.

sourceFileName ou destFileName est une chaîne de longueur nulle, contient seulement un espace, ou contient un ou plusieurs caractères non valides tels que définis par InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

-ou--or- sourceFileName ou destFileName spécifie un répertoire.sourceFileName or destFileName specifies a directory.

sourceFileName ou destFileName est null.sourceFileName or destFileName is null.

Le chemin et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.The specified path, file name, or both exceed the system-defined maximum length.

Le chemin spécifié dans sourceFileName ou destFileName n’est pas valide (par exemple, il est sur un lecteur non mappé).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

sourceFileName est introuvable.sourceFileName was not found.

destFileName existe.destFileName exists.

-ou--or- Une erreur d’E/S s’est produite.An I/O error has occurred.

sourceFileName ou destFileName a un format non valide.sourceFileName or destFileName is in an invalid format.

Examples

L’exemple suivant copie les fichiers dans le dossier de sauvegarde C:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. Elle utilise les deux surcharges de la méthode Copy comme suit :It uses the two overloads of the Copy method as follows:

  • Elle utilise d’abord la surcharge de méthode File.Copy(String, String) pour copier des fichiers texte (. txt).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. Le code montre que cette surcharge n’autorise pas le remplacement des fichiers qui ont déjà été copiés.The code demonstrates that this overload does not allow overwriting files that were already copied.

  • Il utilise ensuite la surcharge de méthode File.Copy(String, String, Boolean) pour copier des images (fichiers. jpg).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). Le code montre que cette surcharge autorise le remplacement des fichiers qui ont déjà été copiés.The code demonstrates that this overload does allow overwriting files that were already copied.

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);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = 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)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = 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 copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Remarks

Cette méthode est équivalente à la surcharge de méthode Copy(String, String, Boolean) avec le paramètre overwrite défini sur false.This method is equivalent to the Copy(String, String, Boolean) method overload with the overwrite parameter set to false.

Les paramètres sourceFileName et destFileName peuvent spécifier des informations relatives au chemin d’accès relatif ou absolu.The sourceFileName and destFileName parameters can specify relative or absolute path information. Les informations relatives au chemin d’accès relatif sont interprétées par rapport au répertoire de travail actuel.Relative path information is interpreted as relative to the current working directory. Pour obtenir le répertoire de travail actuel, consultez la méthode Directory.GetCurrentDirectory.To obtain the current working directory, see the Directory.GetCurrentDirectory method. Cette méthode ne prend pas en charge les caractères génériques dans les paramètres.This method does not support wildcard characters in the parameters.

Les attributs du fichier d’origine sont conservés dans le fichier copié.The attributes of the original file are retained in the copied file.

See also

Copy(String, String, Boolean)

Copie un fichier existant vers un nouveau fichier.Copies an existing file to a new file. Le remplacement d'un fichier du même nom est autorisé.Overwriting a file of the same name is allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Copy (string sourceFileName, string destFileName, bool overwrite);
static member Copy : string * string * bool -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String, overwrite As Boolean)

Parameters

sourceFileName
String

Fichier à copier.The file to copy.

destFileName
String

Nom du fichier de destination.The name of the destination file. Il ne peut pas s'agir d'un répertoire.This cannot be a directory.

overwrite
Boolean

true si le fichier de destination peut être remplacé ; sinon, false.true if the destination file can be overwritten; otherwise, false.

Exceptions

L'appelant ne possède pas l'autorisation requise.The caller does not have the required permission.

-ou--or- destFileName est en lecture seule.destFileName is read-only.

-ou--or- overwrite est true, destFileName existe et est masqué, mais sourceFileName n’est pas masqué.overwrite is true, destFileName exists and is hidden, but sourceFileName is not hidden.

sourceFileName ou destFileName est une chaîne de longueur nulle, contient seulement un espace, ou contient un ou plusieurs caractères non valides tels que définis par InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

-ou--or- sourceFileName ou destFileName spécifie un répertoire.sourceFileName or destFileName specifies a directory.

sourceFileName ou destFileName est null.sourceFileName or destFileName is null.

Le chemin et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.The specified path, file name, or both exceed the system-defined maximum length.

Le chemin spécifié dans sourceFileName ou destFileName n’est pas valide (par exemple, il est sur un lecteur non mappé).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

sourceFileName est introuvable.sourceFileName was not found.

destFileName existe et overwrite est false.destFileName exists and overwrite is false.

-ou--or- Une erreur d’E/S s’est produite.An I/O error has occurred.

sourceFileName ou destFileName a un format non valide.sourceFileName or destFileName is in an invalid format.

Examples

L’exemple suivant copie les fichiers dans le dossier de sauvegarde C:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. Elle utilise les deux surcharges de la méthode Copy comme suit :It uses the two overloads of the Copy method as follows:

  • Elle utilise d’abord la surcharge de méthode File.Copy(String, String) pour copier des fichiers texte (. txt).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. Le code montre que cette surcharge n’autorise pas le remplacement des fichiers qui ont déjà été copiés.The code demonstrates that this overload does not allow overwriting files that were already copied.

Il utilise ensuite la surcharge de méthode File.Copy(String, String, Boolean) pour copier des images (fichiers. jpg).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). Le code montre que cette surcharge autorise le remplacement des fichiers qui ont déjà été copiés.The code demonstrates that this overload does allow overwriting files that were already copied.

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);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = 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)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = 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 copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Remarks

Les paramètres sourceFileName et destFileName peuvent spécifier des informations relatives au chemin d’accès relatif ou absolu.The sourceFileName and destFileName parameters can specify relative or absolute path information. Les informations relatives au chemin d’accès relatif sont interprétées par rapport au répertoire de travail actuel.Relative path information is interpreted as relative to the current working directory. Cette méthode ne prend pas en charge les caractères génériques dans les paramètres.This method does not support wildcard characters in the parameters.

Les attributs du fichier d’origine sont conservés dans le fichier copié.The attributes of the original file are retained in the copied file.

Pour obtenir la liste des tâches d’e/s courantes, consultez tâches d’e/s courantes.For a list of common I/O tasks, see Common I/O Tasks.

See also

Applies to