Gesamtes Verzeichnis im C# kopieren

Hallo, Ich programmiere schon einige zeit in "Microsoft Visual C# 2010 Express". Doch jetzt bin ich auf folgendes Problem gestoßen: Ich möchte einen ganzen Ordner (mit Unterordner, Dateien, ... Einfach alles im Ordner!) kopieren, doch mein Code (unten) erstellt immer ein weiteres Unterverzeichnis...

Also zum Beispiel: "C:/User/Myname/AppData/MyFolder/sourceFolder"

soll nach: "C:/User/Myname/AppData/MyFolder/targetFolder"

KOPIERT werden (Dadurch nützt mir die Anweisung System.IO.Directory.Move nichts)

Doch er kopiert das ganze nach: "C:/User/Myname/AppData/MyFolder/targetFolder/sourceFolder"

Was muss ich bei dem Code ändern??

Hier ist der Code:

   private void CopyDirectoryWithIncludedFiles(string dirCopySource, string dirCopyTarget)
    {
        // alle Unterverzeichnisse des aktuellen Verzeichnisses ermitteln
        string[] subDirectories = Directory.GetDirectories(dirCopySource);

        // Zielpfad erzeugen
        StringBuilder newTargetPath = new StringBuilder();
        {
            newTargetPath.Append(dirCopyTarget);
            // Diese Zeile Erstellt einen Ordner im Zielordner: (Kann leider nicht entfernt werden!)
            newTargetPath.Append(dirCopySource.Substring(dirCopySource.LastIndexOf(@"\")));

        }

        // wenn aktueller Ordner nicht existiert -> ersstellen
        if (!Directory.Exists(newTargetPath.ToString()))
            Directory.CreateDirectory(newTargetPath.ToString());


        // Unterverzeichnise durchlaufen und Funktion mit dazu gehörigen Zielpfad erneut aufrufen (Rekursion)
        foreach (string subDirectory in subDirectories)
        {
            string newDirectoryPath = subDirectory;

            // wenn ''/'' an letzter Stelle dann entfernen
            if (newDirectoryPath.LastIndexOf(@"\") == (newDirectoryPath.Length - 1))
                newDirectoryPath = newDirectoryPath.Substring(0, newDirectoryPath.Length - 1);

            // rekursiever Aufruf
            CopyDirectoryWithIncludedFiles(newDirectoryPath, newTargetPath.ToString());
        }


        // alle enthaltenden Dateien des aktuellen Verzeichnisses ermitteln
        string[] fileNames = Directory.GetFiles(dirCopySource);
        foreach (string fileSource in fileNames)
        {
            // Zielpfad + Dateiname
            StringBuilder fileTarget = new StringBuilder();
            {
                fileTarget.Append(newTargetPath);
                fileTarget.Append(fileSource.Substring(fileSource.LastIndexOf(@"\")));
            }

            // Datei kopieren, wenn schon vorhanden überschreiben
            File.Copy(fileSource, fileTarget.ToString(), true);
        }
    }

Bitte helft mir! Brauche das ganz dringend!

PC, Computer, Programm, C Sharp, Visual Studio

Meistgelesene Beiträge zum Thema C Sharp