File.Copy Methode

Definition

Kopiert eine vorhandene Datei in eine neue Datei.

Überlädt

Copy(String, String, Boolean)

Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer gleichnamigen Datei ist zulässig.

Copy(String, String)

Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer gleichnamigen Datei ist nicht zulässig.

Copy(String, String, Boolean)

Quelle:
File.cs
Quelle:
File.cs
Quelle:
File.cs

Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer gleichnamigen Datei 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. Dabei darf es sich nicht um ein Verzeichnis handeln.

overwrite
Boolean

true , wenn die Zieldatei ersetzt werden soll, wenn sie bereits vorhanden ist; falseandernfalls .

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 ist eine leere Zeichenfolge, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

- oder -

sourceFileName oder destFileName gibt ein Verzeichnis an.

sourceFileName oder destFileName ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Der in sourceFileName oder destFileName angegebene Pfad ist ungültig (er befindet sich z. B. auf einem nicht zugeordneten Laufwerk).

sourceFileName wurde nicht gefunden.

destFileName ist vorhanden und overwrite ist false.

- oder -

Ein E/A-Fehler ist aufgetreten.

sourceFileName oder destFileName weist ein ungültiges Format auf.

Beispiele

Im folgenden Beispiel werden Dateien in den Sicherungsordner C:\archives\2008 kopiert. Die beiden Überladungen der Copy -Methode werden wie folgt verwendet:

  • Zunächst wird die File.Copy(String, String) Methodenüberladung verwendet, um Textdateien (.txt) zu kopieren. Der Code zeigt, 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 zum Kopieren von Bildern (.jpg Dateien) verwendet. Der Code zeigt, 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 sourceFileName Parameter 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 ursprünglichen Datei werden in der kopierten Datei beibehalten.

Eine Liste der allgemeinen E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Weitere Informationen

Gilt für:

Copy(String, String)

Quelle:
File.cs
Quelle:
File.cs
Quelle:
File.cs

Kopiert eine vorhandene Datei in eine neue Datei. Das Überschreiben einer gleichnamigen Datei 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 darf kein Verzeichnis und keine vorhandene Datei sein.

Ausnahmen

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

sourceFileName oder destFileName ist eine leere Zeichenfolge, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

- oder -

sourceFileName oder destFileName gibt ein Verzeichnis an.

sourceFileName oder destFileName ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Der in sourceFileName oder destFileName angegebene Pfad ist ungültig (er befindet sich z. B. auf einem nicht zugeordneten Laufwerk).

sourceFileName wurde nicht gefunden.

destFileName ist vorhanden.

- oder -

Ein E/A-Fehler ist aufgetreten.

sourceFileName oder destFileName weist ein ungültiges Format auf.

Beispiele

Im folgenden Beispiel werden Dateien in den Sicherungsordner C:\archives\2008 kopiert. Die beiden Überladungen der Copy -Methode werden wie folgt verwendet:

  • Zunächst wird die File.Copy(String, String) Methodenüberladung verwendet, um Textdateien (.txt) zu kopieren. Der Code zeigt, 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 zum Kopieren von Bildern (.jpg Dateien) verwendet. Der Code zeigt, 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, deren overwrite Parameter auf falsefestgelegt ist.

Die sourceFileName Parameter 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 in der Directory.GetCurrentDirectory -Methode. Diese Methode unterstützt keine Wildcardzeichen in den Parametern.

Die Attribute der ursprünglichen Datei werden in der kopierten Datei beibehalten.

Weitere Informationen

Gilt für: