File.Copy Méthode

Définition

Copie un fichier existant vers un nouveau fichier.

Surcharges

Copy(String, String, Boolean)

Copie un fichier existant vers un nouveau fichier. Le remplacement d'un fichier du même nom est autorisé.

Copy(String, String)

Copie un fichier existant vers un nouveau fichier. Le remplacement d'un fichier du même nom n'est pas autorisé.

Copy(String, String, Boolean)

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

Copie un fichier existant vers un nouveau fichier. Le remplacement d'un fichier du même nom est autorisé.

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)

Paramètres

sourceFileName
String

Fichier à copier.

destFileName
String

Nom du fichier de destination. Il ne peut pas s'agir d'un répertoire.

overwrite
Boolean

true si le fichier de destination doit être remplacé s’il existe déjà ; sinon, false.

Exceptions

L'appelant n'a pas l'autorisation requise.

- ou -

destFileName est en lecture seule.

- ou -

overwrite est true, destFileName existe et est masqué, mais sourceFileName n’est pas masqué.

sourceFileName ou destFileName est une chaîne de longueur nulle, contenant seulement un espace, ou un ou plusieurs caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().

- ou -

sourceFileName ou destFileName spécifie un répertoire.

sourceFileName ou destFileName est null.

Le chemin et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.

Le chemin spécifié dans sourceFileName ou destFileName n’est pas valide (par exemple, il est sur un lecteur non mappé).

sourceFileName est introuvable.

destFileName existe et overwrite est false.

- ou -

Une erreur d’E/S s’est produite.

sourceFileName ou destFileName a un format non valide.

Exemples

L’exemple suivant copie des fichiers dans le dossier de sauvegarde C :\archives\2008. Il utilise les deux surcharges de la Copy méthode comme suit :

  • Il utilise d’abord la surcharge de File.Copy(String, String) méthode pour copier des fichiers texte (.txt). Le code montre que cette surcharge n’autorise pas le remplacement des fichiers qui ont déjà été copiés.

Il utilise ensuite la surcharge de File.Copy(String, String, Boolean) méthode pour copier des images (.jpg fichiers). Le code montre que cette surcharge permet de remplacer les fichiers qui ont déjà été copiés.

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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let 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.
    for f in txtList do
        // Remove path from the file name.
        let 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.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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

Remarques

Les sourceFileName paramètres et destFileName peuvent spécifier des informations relatives ou absolues sur le chemin d’accès. Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel. Cette méthode ne prend pas en charge les caractères génériques dans les paramètres.

Les attributs du fichier d’origine sont conservés dans le fichier copié.

Pour obtenir la liste des tâches d’E/S courantes, consultez Tâches courantes d’E/S.

Voir aussi

S’applique à

Copy(String, String)

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

Copie un fichier existant vers un nouveau fichier. Le remplacement d'un fichier du même nom n'est pas autorisé.

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)

Paramètres

sourceFileName
String

Fichier à copier.

destFileName
String

Nom du fichier de destination. Celui-ci ne peut pas être un répertoire ou un fichier existant.

Exceptions

L'appelant n'a pas l'autorisation requise.

sourceFileName ou destFileName est une chaîne de longueur nulle, contenant seulement un espace, ou un ou plusieurs caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().

- ou -

sourceFileName ou destFileName spécifie un répertoire.

sourceFileName ou destFileName est null.

Le chemin et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.

Le chemin spécifié dans sourceFileName ou destFileName n’est pas valide (par exemple, il est sur un lecteur non mappé).

sourceFileName est introuvable.

destFileName existe.

- ou -

Une erreur d’E/S s’est produite.

sourceFileName ou destFileName a un format non valide.

Exemples

L’exemple suivant copie des fichiers dans le dossier de sauvegarde C :\archives\2008. Il utilise les deux surcharges de la Copy méthode comme suit :

  • Il utilise d’abord la surcharge de File.Copy(String, String) méthode pour copier des fichiers texte (.txt). Le code montre que cette surcharge n’autorise pas le remplacement des fichiers qui ont déjà été copiés.

  • Il utilise ensuite la surcharge de File.Copy(String, String, Boolean) méthode pour copier des images (.jpg fichiers). Le code montre que cette surcharge permet de remplacer les fichiers qui ont déjà été copiés.

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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let 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.
    for f in txtList do
        // Remove path from the file name.
        let 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.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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

Remarques

Cette méthode équivaut à la surcharge de méthode Copy(String, String, Boolean) avec le overwrite paramètre défini sur false.

Les sourceFileName paramètres et destFileName peuvent spécifier des informations relatives ou absolues sur le chemin d’accès. Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel. Pour obtenir le répertoire de travail actuel, consultez la Directory.GetCurrentDirectory méthode . Cette méthode ne prend pas en charge les caractères génériques dans les paramètres.

Les attributs du fichier d’origine sont conservés dans le fichier copié.

Voir aussi

S’applique à