File.Copy Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Copie un fichier existant dans un nouveau fichier.
Surcharges
Copy(String, String) |
Copie un fichier existant dans un nouveau fichier. Le remplacement d’un fichier du même nom n’est pas autorisé. |
Copy(String, String, Boolean) |
Copie un fichier existant dans un nouveau fichier. Le remplacement d’un fichier du même nom est autorisé. |
Copy(String, String)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
Copie un fichier existant dans 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. Il ne peut pas s’agir d’un répertoire ou d’un fichier existant.
Exceptions
L’appelant n’a pas l’autorisation requise.
sourceFileName
ou destFileName
est une chaîne de longueur nulle, contient uniquement un espace blanc ou contient un ou plusieurs caractères non valides. Vous pouvez rechercher des 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 d’accès spécifié, le nom de fichier ou les deux dépassent la longueur maximale définie par le système.
Le chemin d’accès spécifié dans sourceFileName
ou destFileName
n’est pas valide (par exemple, il se trouve sur un lecteur non mappé).
sourceFileName
n’a pas été trouvé.
sourceFileName
ou destFileName
est dans un format non valide.
Exemples
L’exemple suivant copie les fichiers dans le dossier de sauvegarde C :\archives\2008. Il utilise les deux surcharges de la méthode Copy comme suit :
Il utilise d’abord la surcharge de méthode File.Copy(String, String) 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 méthode File.Copy(String, String, Boolean) pour copier des images (fichiers.jpg). Le code montre que cette surcharge autorise le remplacement des 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 paramètre overwrite
défini sur false
.
Les paramètres sourceFileName
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 méthode Directory.GetCurrentDirectory. 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
- Move(String, String)
- Move(String, String)
- fichier et flux d’E/S
- lecture de texte à partir d’un fichier
- Comment : écrire du texte dans un fichier
- Comment : lire et écrire dans un fichier de données nouvellement créé
S’applique à
Copy(String, String, Boolean)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
Copie un fichier existant dans 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, contient uniquement un espace blanc ou contient un ou plusieurs caractères non valides. Vous pouvez rechercher des 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 d’accès spécifié, le nom de fichier ou les deux dépassent la longueur maximale définie par le système.
Le chemin d’accès spécifié dans sourceFileName
ou destFileName
n’est pas valide (par exemple, il se trouve sur un lecteur non mappé).
sourceFileName
n’a pas été trouvé.
sourceFileName
ou destFileName
est dans un format non valide.
Exemples
L’exemple suivant copie les fichiers dans le dossier de sauvegarde C :\archives\2008. Il utilise les deux surcharges de la méthode Copy comme suit :
- Il utilise d’abord la surcharge de méthode File.Copy(String, String) 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 méthode File.Copy(String, String, Boolean) pour copier des images (fichiers.jpg). Le code montre que cette surcharge autorise le remplacement des 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 paramètres sourceFileName
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 d’E/S courantes.
Voir aussi
- Move(String, String)
- Move(String, String)
- fichier et flux d’E/S
- lecture de texte à partir d’un fichier
- Comment : écrire du texte dans un fichier
- Comment : lire et écrire dans un fichier de données nouvellement créé