Ich habe mir am Sonntag ein bisschen Zeit genommen und mit der Programmierung angefangen. Klingt doch gar nicht so kompliziert: mal einen Ordner kopieren. Am Anfang habe ich erstmal ein paar Komponenten, die ich schon in der Plattenverwaltung verwende, in eine gemeinsam genutzte Bibliothek verschoben und musste natürlich in der Plattenverwaltung ein paar Referenzen korrigieren. So nach 2-3 Stunden hatte ich dann eine Oberfläche mit einem Button und eine wieder funktionierende Plattenverwaltung.
Für den Anfang stand ja folgendes fest:
- kein Oberflächen-Schnick-Schnack – Button und fertig
- Quelle und Ziel sind im Code verankert
- Backup läuft synchron, d.h. keine Aktualisierung der Oberfläche während kopiert wird
Datenmodell brauchte ich diesmal nicht und konnte gleich loslegen. In meinem Kopf stiegen die Aufgaben wie kleine Bläschen hoch. Verzeichnis rekursiv auslesen, Liste von Dateien erstellen, Dateien kopieren. Schon allein für das Auslesen gibt es mehrere Wege und Strategien. Ich entschloss mich für die ausführliche Version, die mir zu einer Datei gleich die Attribute (Ist ein Verzeichnis? Ist eine temporäre Datei?) mitliefert. Strategie ist „Tiefe zuerst“, d.h. erstmal alle Verzeichnisse durchklappern und dort die Dateien einsammeln. Dann wurde es kurz kniffelig. Ich musste ja den Quellpfad nehmen und mit dem Zielpfad mischen. Also wenn ich z.B. den Ordner C:\Users\jan\Pictures nach E:\ sichern will, muss ich die Datei C:\Users\jan\Pictures\Island\tolles_bild.jpg nach E:\Pictures-2016-09-14_19-34\Island\tolles_bild.jpg kopieren. An der Stelle vielen mir drei Szenarios ein: 1. Verzeichnis nach Verzeichnis (easy – der Standardfall), 2. Verzeichnis nach Laufwerk (etwas Spaß mit den Pfadtrennern, aber auch noch einfach) und 3. irgendwas mit Netzwerkpfaden (erstmal nicht ausprobiert). Dass an den Zielpfad das Datum und die Uhrzeit rangeklebt wird, ist zwar etwas vorgegriffen, aber dann hab ich es schon mal drin.
Damit es überhaupt was zu sehen gibt, schon mal die Code-Map des Projekts. Momentan noch sehr übersichtlich…