Heim >Backend-Entwicklung >C++ >Wie kopiere ich den Inhalt eines Verzeichnisses in C# rekursiv?

Wie kopiere ich den Inhalt eines Verzeichnisses in C# rekursiv?

Barbara Streisand
Barbara StreisandOriginal
2025-01-26 19:51:09417Durchsuche

How to Recursively Copy a Directory's Contents in C#?

Verzeichnisinhalte rekursiv in C# kopieren

Das Kopieren des Inhalts eines gesamten Verzeichnisses ist eine häufige Aufgabe in der Softwareentwicklung. Obwohl es in System.IO anscheinend keinen direkten Weg gibt, dies zu erreichen, gibt es Alternativen.

Eine Problemumgehung besteht darin, die Klasse Microsoft.VisualBasic.Devices.Computer zu verwenden, auf die durch Hinzufügen eines Verweises auf Microsoft.VisualBasic zugegriffen werden kann:

<code class="language-csharp">new Microsoft.VisualBasic.Devices.Computer().
    FileSystem.CopyDirectory(sourceFolder, outputFolder);</code>

Dieser Ansatz gilt jedoch nicht als elegante Lösung. Ein robusterer Ansatz umfasst die folgenden Schritte:

  1. Erstellen Sie alle erforderlichen Verzeichnisse im Zielpfad, damit sie der Struktur des Quellverzeichnisses entsprechen.
  2. Kopiert jede Datei vom Quellpfad in den entsprechenden Zielpfad und überschreibt alle vorhandenen Dateien mit demselben Namen.

Der folgende Code demonstriert diesen Ansatz:

<code class="language-csharp">private static void CopyFilesRecursively(string sourcePath, string targetPath)
{
    // 在目标路径中创建目录
    foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
    {
        Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPath));
    }

    // 将文件从源路径复制到目标路径
    foreach (string newPath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories))
    {
        File.Copy(newPath, newPath.Replace(sourcePath, targetPath), true);
    }
}</code>

Diese Methode kopiert rekursiv das gesamte Quellverzeichnis (einschließlich Unterverzeichnisse und Dateien) in das angegebene Zielverzeichnis. Es ersetzt auch alle vorhandenen Dateien mit demselben Namen.

Das obige ist der detaillierte Inhalt vonWie kopiere ich den Inhalt eines Verzeichnisses in C# rekursiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn