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