File.Copy Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Kopiert eine vorhandene Datei in eine neue Datei.
Überlädt
Copy(String, String) |
Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer Datei mit demselben Namen ist nicht zulässig. |
Copy(String, String, Boolean) |
Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer Datei mit demselben Namen ist zulässig. |
Copy(String, String)
- Quelle:
- File.cs
- Quelle:
- File.cs
- Quelle:
- File.cs
Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer Datei mit demselben Namen ist nicht zulässig.
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)
Parameter
- sourceFileName
- String
Die zu kopierende Datei.
- destFileName
- String
Der Name der Zieldatei. Dies kann kein Verzeichnis oder eine vorhandene Datei sein.
Ausnahmen
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
sourceFileName
oder destFileName
eine leere Zeichenfolge ist, nur Leerzeichen enthält oder mindestens ein ungültiges Zeichen enthält. Sie können ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode abfragen.
-oder-
sourceFileName
oder destFileName
gibt ein Verzeichnis an.
sourceFileName
oder destFileName
ist null
.
Der angegebene Pfad, der Dateiname oder beide überschreiten die vom System definierte maximale Länge.
Der in sourceFileName
oder destFileName
angegebene Pfad ist ungültig (z. B. auf einem nicht zugeordneten Laufwerk).
sourceFileName
wurde nicht gefunden.
sourceFileName
oder destFileName
weist ein ungültiges Format auf.
Beispiele
Im folgenden Beispiel werden Dateien in den Sicherungsordner "C:\archives\2008" kopiert. Es verwendet die beiden Überladungen der Copy-Methode wie folgt:
Zunächst wird die File.Copy(String, String) Methodenüberladung verwendet, um Textdateien (.txt) zu kopieren. Der Code veranschaulicht, dass diese Überladung das Überschreiben von Dateien, die bereits kopiert wurden, nicht zulässt.
Anschließend wird die File.Copy(String, String, Boolean) Methodenüberladung verwendet, um Bilder (.jpg Dateien) zu kopieren. Der Code veranschaulicht, dass diese Überladung das Überschreiben von Dateien ermöglicht, die bereits kopiert wurden.
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
Hinweise
Diese Methode entspricht der Copy(String, String, Boolean) Methodenüberladung mit dem overwrite
Parameter, der auf false
festgelegt ist.
Die Parameter sourceFileName
und destFileName
können relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter der Directory.GetCurrentDirectory-Methode. Diese Methode unterstützt keine Wildcardzeichen in den Parametern.
Die Attribute der Originaldatei werden in der kopierten Datei beibehalten.
Weitere Informationen
- Move(String, String)
- Move(String, String)
- Datei- und Stream-E/A-
- Lesen von Text aus einer Datei
- How to: Write Text to a File
- Gewusst wie: Lesen und Schreiben in eine neu erstellte Datendatei
Gilt für:
Copy(String, String, Boolean)
- Quelle:
- File.cs
- Quelle:
- File.cs
- Quelle:
- File.cs
Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer Datei mit demselben Namen ist zulässig.
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)
Parameter
- sourceFileName
- String
Die zu kopierende Datei.
- destFileName
- String
Der Name der Zieldatei. Dies kann kein Verzeichnis sein.
- overwrite
- Boolean
true
, wenn die Zieldatei ersetzt werden soll, wenn sie bereits vorhanden ist; andernfalls false
.
Ausnahmen
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
-oder-
destFileName
ist schreibgeschützt.
-oder-
overwrite
ist true
, destFileName
ist vorhanden und ausgeblendet, aber sourceFileName
ist nicht ausgeblendet.
sourceFileName
oder destFileName
eine leere Zeichenfolge ist, nur Leerzeichen enthält oder mindestens ein ungültiges Zeichen enthält. Sie können ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode abfragen.
-oder-
sourceFileName
oder destFileName
gibt ein Verzeichnis an.
sourceFileName
oder destFileName
ist null
.
Der angegebene Pfad, der Dateiname oder beide überschreiten die vom System definierte maximale Länge.
Der in sourceFileName
oder destFileName
angegebene Pfad ist ungültig (z. B. auf einem nicht zugeordneten Laufwerk).
sourceFileName
wurde nicht gefunden.
sourceFileName
oder destFileName
weist ein ungültiges Format auf.
Beispiele
Im folgenden Beispiel werden Dateien in den Sicherungsordner "C:\archives\2008" kopiert. Es verwendet die beiden Überladungen der Copy-Methode wie folgt:
- Zunächst wird die File.Copy(String, String) Methodenüberladung verwendet, um Textdateien (.txt) zu kopieren. Der Code veranschaulicht, dass diese Überladung das Überschreiben von Dateien, die bereits kopiert wurden, nicht zulässt.
Anschließend wird die File.Copy(String, String, Boolean) Methodenüberladung verwendet, um Bilder (.jpg Dateien) zu kopieren. Der Code veranschaulicht, dass diese Überladung das Überschreiben von Dateien ermöglicht, die bereits kopiert wurden.
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
Hinweise
Die Parameter sourceFileName
und destFileName
können relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Diese Methode unterstützt keine Wildcardzeichen in den Parametern.
Die Attribute der Originaldatei werden in der kopierten Datei beibehalten.
Eine Liste allgemeiner E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.
Weitere Informationen
- Move(String, String)
- Move(String, String)
- Datei- und Stream-E/A-
- Lesen von Text aus einer Datei
- How to: Write Text to a File
- Gewusst wie: Lesen und Schreiben in eine neu erstellte Datendatei