by
Roland Schumacher alias GENiALi
15. April 2005 -- 144
words -- 91 mal gelesen
Mit C# ist es von Haus aus nicht möglich, jedenfals habe ich nichts gefunden, ein Verzeichnis
mit allen Unterordner und Dateien zu kopieren.
Verschieben geht allerdings.
Directory.Move();
Eine Datei kann auch ohne weiteres kopiert werden.
File.Copy(strFile, strZiel, true);
true zeigt an, dass die Zieldatei überschrieben werden kann wenn sie vorhanden ist.
Aber eben, was wenn man ganze Verzeichnisstruckturen kopieren will. Ich habe mir da
was gemacht, dass bei mir zum gewünschten Ziel führte. Man kann die Methode sicher noch
verbessern. Aber, sie funktioniert.
- ACHTUNG -
Diese Methode ist fehlerhaft. Bitte schauen hier nachlesen.
private
void CopyFolder(string StartFolder, string ZielFolder)
{
//Gib mir alle Unterverzeichnisse zurück
string[] strFolders = Directory.GetDirectories(StartFolder);
string strZielFolder =string.Empty;
//Durch alle Verzeichnisse laufen
foreach(string strFolder in strFolders)
{
//Verzeichnis am Zielort ersellen
strZielFolder = strFolder.Replace(StartFolder, ZielFolder);
Directory.CreateDirectory(strZielFolder);
//Die nächsten unterordner suchen
CopyFolder(strFolder, strZielFolder);
}
//Jetzt alle Files im Verzeichnis holen
string[] strFiles = Directory.GetFiles(StartFolder);
//Durch alle Files laufen
foreach(string strFile in strFiles)
{
string strZiel = Path.Combine(ZielFolder, Path.GetFileName(strFile));
File.Copy(strFile, strZiel, true);
}
}
Wer Verbesserungsvorschläge, Vereinfachungen oder bessere Lösungen hat, bitte informiert mich.