Hallo Leute,
ich bräuchte etwas Hilfe bei meiner Programmieraufgabe. Ich werd sie unten im Anhang auch nochmal hochladen, aber ich beschreibe sie auch nochmal kurz. Es geht darum eine windows forms Anwendung zu erstellen, mit der man den Inhalt von einem Ordner mit einem anderen synchronisieren kann. Ich bin jetzt soweit, dass ich den Inhalt von dem alten Ordner in den neuen reinkopiere (wenn es bei einer Datei Übereinstimmung gibt, soll nachgefragt werden ob die Datei überschrieben wird falls sie neuer ist). Das Problem ist jetzt:
Es wird nur reinkopiert, d.h. wenn im neuen ordner vorher schon Datei sind, die nicht im alten sind, dann bleiben die erhalten, das soll nicht sein die Ordner sollen synchronisiert werden.
Der Neue Ordner soll genau den gleichen Inhalt haben wie der Alte.
Ich lade erstmal nur die Methode mit dem Kopieren hoch, der Rest ist ja eigentlich uninteressant. Die Funktion ist Rekursiv und wird immer wieder aufgerufen bis alle Unterverzeichnisse und Dateien durch sind. Die Aufgabenstellung lade ich auch mit hoch.
Was ich vergessen habe zu sagen habs noch nicht so drauf. Bitte bei der Antwort sehr ausführlich, was wo gemacht werden muss, damit es selbst ein anfänger versteht
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| private void DirectoryCopy(string quellpfad, string zielpfad, bool copyUnterverzeichnise) {
try { DirectoryInfo myQuellDir = new DirectoryInfo(quellpfad); DirectoryInfo myZielDir = new DirectoryInfo(zielpfad);
if (!myQuellDir.Exists) { throw new DirectoryNotFoundException( "Das Quellverzeichnis existiert nicht oder konnte nicht gefunden werden!" + myQuellDir.Name); }
DirectoryInfo[] myQuellDirs = myQuellDir.GetDirectories();
if (!Directory.Exists(zielpfad)) { Directory.CreateDirectory(zielpfad); }
FileInfo[] filesQuellDir = myQuellDir.GetFiles(); foreach (FileInfo file in filesQuellDir) {
string temppath = Path.Combine(zielpfad, file.Name);
if (!File.Exists(temppath)) { file.CopyTo(temppath, true); } else { if (File.Exists(temppath) && file.LastWriteTime > File.GetLastWriteTime(temppath)) { file.CopyTo(temppath, true); } else if (File.Exists(temppath) && file.LastWriteTime < File.GetLastWriteTime(temppath)) { DialogResult result = MessageBox.Show("Die Datei '" + file.Name + "' existiert bereits!\nMöchten Sie diese mit der älteren Version überschreiben?", "Datei bereits vorhanden!", MessageBoxButtons.YesNo); if (result == System.Windows.Forms.DialogResult.Yes) { file.CopyTo(temppath, true); } }
} while (progressBar1.Value < progressBar1.Maximum) { progressBar1.Value++; progressBar1.Refresh(); } }
if (copyUnterverzeichnise) { foreach (DirectoryInfo subdir in myQuellDirs) { string temppath = Path.Combine(zielpfad, subdir.Name); DirectoryCopy(subdir.FullName, temppath, copyUnterverzeichnise); } } } catch { MessageBox.Show("Kontrollieren sie bitte die Pfadeingaben", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } } |