Hi Leute!
Die Osterferien sind vorbei und ich hab eine neue Aufgabe aufbekommen!
Da hats mich heut ordentlich aus den Socken gerissen, wie ich dich gelesen hab!
Finde, da ist eine gewaltige Steigerung zur letzten Übung sichtbar, oder was meint ihr?
Ich hoffe dieses Mal wieder sehr auf eure tatkräftige Unterstützung!
Also hier mal die Angabe, damit jeder weiß, worum es geht:
Es geht um einen Datei-Manager:
-----------------------------------------------------------------------
Teil 1: Verwaltung von Dateien und Verzeichnissen
Implementieren Sie eine Klassenhierarchie für die Repräsentation von Dateien (Klasse FileNode) und
Verzeichnissen (Klasse DirectoryNode). Dateien haben einen Namen und eine Länge, Verzeichnisse
einen Namen und weitere Unterelemente (Dateien und Verzeichnisse). Diese sollen in einer gemeinsamen,
sortierten Liste verwaltet werden. Verwenden Sie dazu Klassen und Interfaces aus dem Java Collection
Framework. Erklären Sie in der Prosabeschreibung, warum Sie diese Klassen gewählt haben.
Implementieren Sie alle nötigen get- und set-Methoden für die Felder. Die Liste mit den Unterelementen
soll nicht direkt zugänglich sein, sondern es soll beim Zugriff ein Array mit allen Unterelementen geliefert
werden.
Dateien und Verzeichnisse sollen nach folgenden Kriterien sortiert werden (angelehnt an die Sortierung
im Explorer von Windows XP):
• Verzeichnisse vor Dateien.
• Verzeichnisse alphabetisch.
• Dateien, deren Name mit einer Zahl beginnt, aufsteigend nach dieser Zahl. Negative Zahlen
können ignoriert werden.
• Wenn die Zahl am Beginn gleich ist, oder wenn am Beginn keine Zahl steht, alphabetisch.
Bei der alphabetischen Sortierung soll die Groß- und Kleinschreibung ignoriert werden. Es soll nicht
möglich sein, dass ein Verzeichnis zwei Elemente enthält, die nach diesen Kriterien gleich sind.
Beispiel für eine korrekte Sortierung von Dateinamen: "2 ab", "2 Ac", "10 ab", "ab", "aC".
Um die Klassenhierarchie flexibel einsetzen zu können, sollen alle Dateien und Verzeichnisse ein Feld
userData besitzen. Verwenden Sie dazu einen generischen Typ-Parameter.
Versuchen Sie, Compiler-Warnungen möglichst zu vermeiden. Wenn sich eine Warnung nicht vermeiden
lässt, muss diese in einem Kommentar gerechtfertigt werden.
Teil 2: Datei-Manager
Verwenden Sie die Klassen aus dem vorigen Teil, um eine Datei- und Verzeichnis-Liste für ein
Verzeichnis der Festplatte auszugeben. Bauen Sie dazu die entsprechende Struktur aus FileNodes und
DirectoryNodes auf.
Verwenden Sie das Feld userData, um das Datum der letzten Änderung zu speichern (als Objekt der
Klasse java.util.Date)!
Für den Zugriff auf das Dateisystem bietet Java die Klasse java.io.File an. Die Methode
getName() liefert den Dateinamen, length() liefert die Dateigröße und lastModified() das
Änderungsdatum. Mit isDirectory() können Sie feststellen, ob es sich um eine Datei oder ein
Verzeichnis handelt, und listFiles() liefert eine Liste mit allen Dateien und Unterverzeichnissen
eines Verzeichnisses.
Geben Sie dann die Struktur mit allen Feldern auf der Konsole aus. Das Wurzel-Verzeichnis soll dem
Programm als Parameter übergeben werden.
Das folgende Beispiel zeigt eine mögliche Testausgabe für ein Verzeichnis mit einigen Dateien und
Unterverzeichnissen:
Test Fri Apr 01 07:00:00 CEST 2005 [DIR]
100 abc Fri Apr 01 08:00:00 CEST 2005 [DIR]
file 1 in dir Fri Apr 01 08:00:01 CEST 2005 (10 bytes)
file 2 in dir Fri Apr 01 08:00:02 CEST 2005 (20 bytes)
20 abc Fri Apr 01 08:01:00 CEST 2005 [DIR]
3 abc Fri Apr 01 08:02:00 CEST 2005 [DIR]
abc Fri Apr 01 08:03:00 CEST 2005 [DIR]
file 1 in dir Fri Apr 01 08:03:01 CEST 2005 (30 bytes)
file 2 in dir Fri Apr 01 08:03:02 CEST 2005 (40 bytes)
3 abc.txt Fri Apr 01 08:04:00 CEST 2005 (10 bytes)
20 abc.txt Fri Apr 01 08:05:00 CEST 2005 (20 bytes)
100 abc.txt Fri Apr 01 08:06:00 CEST 2005 (30 bytes)
-1 abc.txt Fri Apr 01 08:07:00 CEST 2005 (40 bytes)
-20 abc.txt Fri Apr 01 08:08:00 CEST 2005 (50 bytes)
-abc.txt Fri Apr 01 08:09:00 CEST 2005 (60 bytes)
abB.txt Fri Apr 01 08:10:00 CEST 2005 (70 bytes)
abc.txt Fri Apr 01 08:11:00 CEST 2005 (80 bytes)
abc1.txt Fri Apr 01 08:12:00 CEST 2005 (90 bytes)
abD.txt Fri Apr 01 08:13:00 CEST 2005 (100 bytes)
---------------------------------------------------------------------------
Also ich werd jetzt mal für den Anfang :autsch: mit Teil 1 beginnen!
Momentan kann ich mir noch nicht viel drunter vorstellen!
Ich glaub, ich beginn mal damit, die Klassenhierarchie aufzubauen!
Welche Klassen brauch ich da?
Hat jemand einen Vorschlag?
Ich glaub ich nehm hier das Pattern Composite, oder? ...also mit einer abstrakten Überklasse, von der sich dann
FileNode und DirectoryNode ableiten!
Dann könnte ich noch eine SortedSet verwenden für das Ordnen der Elemente! Ordnen tu ich das mit der Methode compareTo()!
Hat jemand einen besseren Vorschlag für den Anfang?
Oh Mann..du Generics sind dann natürlich oben drein noch ein anderes Thema! :###
Also ihr seht, ich hab viel zu tun bis nächsten Dienstag!
Ich hoffe, ihr zeigt wieder so viel Hilfsbereitschaft wie bisher!
Danke!
ciao,Tommy
Die Osterferien sind vorbei und ich hab eine neue Aufgabe aufbekommen!
Da hats mich heut ordentlich aus den Socken gerissen, wie ich dich gelesen hab!
Finde, da ist eine gewaltige Steigerung zur letzten Übung sichtbar, oder was meint ihr?
Ich hoffe dieses Mal wieder sehr auf eure tatkräftige Unterstützung!
Also hier mal die Angabe, damit jeder weiß, worum es geht:
Es geht um einen Datei-Manager:
-----------------------------------------------------------------------
Teil 1: Verwaltung von Dateien und Verzeichnissen
Implementieren Sie eine Klassenhierarchie für die Repräsentation von Dateien (Klasse FileNode) und
Verzeichnissen (Klasse DirectoryNode). Dateien haben einen Namen und eine Länge, Verzeichnisse
einen Namen und weitere Unterelemente (Dateien und Verzeichnisse). Diese sollen in einer gemeinsamen,
sortierten Liste verwaltet werden. Verwenden Sie dazu Klassen und Interfaces aus dem Java Collection
Framework. Erklären Sie in der Prosabeschreibung, warum Sie diese Klassen gewählt haben.
Implementieren Sie alle nötigen get- und set-Methoden für die Felder. Die Liste mit den Unterelementen
soll nicht direkt zugänglich sein, sondern es soll beim Zugriff ein Array mit allen Unterelementen geliefert
werden.
Dateien und Verzeichnisse sollen nach folgenden Kriterien sortiert werden (angelehnt an die Sortierung
im Explorer von Windows XP):
• Verzeichnisse vor Dateien.
• Verzeichnisse alphabetisch.
• Dateien, deren Name mit einer Zahl beginnt, aufsteigend nach dieser Zahl. Negative Zahlen
können ignoriert werden.
• Wenn die Zahl am Beginn gleich ist, oder wenn am Beginn keine Zahl steht, alphabetisch.
Bei der alphabetischen Sortierung soll die Groß- und Kleinschreibung ignoriert werden. Es soll nicht
möglich sein, dass ein Verzeichnis zwei Elemente enthält, die nach diesen Kriterien gleich sind.
Beispiel für eine korrekte Sortierung von Dateinamen: "2 ab", "2 Ac", "10 ab", "ab", "aC".
Um die Klassenhierarchie flexibel einsetzen zu können, sollen alle Dateien und Verzeichnisse ein Feld
userData besitzen. Verwenden Sie dazu einen generischen Typ-Parameter.
Versuchen Sie, Compiler-Warnungen möglichst zu vermeiden. Wenn sich eine Warnung nicht vermeiden
lässt, muss diese in einem Kommentar gerechtfertigt werden.
Teil 2: Datei-Manager
Verwenden Sie die Klassen aus dem vorigen Teil, um eine Datei- und Verzeichnis-Liste für ein
Verzeichnis der Festplatte auszugeben. Bauen Sie dazu die entsprechende Struktur aus FileNodes und
DirectoryNodes auf.
Verwenden Sie das Feld userData, um das Datum der letzten Änderung zu speichern (als Objekt der
Klasse java.util.Date)!
Für den Zugriff auf das Dateisystem bietet Java die Klasse java.io.File an. Die Methode
getName() liefert den Dateinamen, length() liefert die Dateigröße und lastModified() das
Änderungsdatum. Mit isDirectory() können Sie feststellen, ob es sich um eine Datei oder ein
Verzeichnis handelt, und listFiles() liefert eine Liste mit allen Dateien und Unterverzeichnissen
eines Verzeichnisses.
Geben Sie dann die Struktur mit allen Feldern auf der Konsole aus. Das Wurzel-Verzeichnis soll dem
Programm als Parameter übergeben werden.
Das folgende Beispiel zeigt eine mögliche Testausgabe für ein Verzeichnis mit einigen Dateien und
Unterverzeichnissen:
Test Fri Apr 01 07:00:00 CEST 2005 [DIR]
100 abc Fri Apr 01 08:00:00 CEST 2005 [DIR]
file 1 in dir Fri Apr 01 08:00:01 CEST 2005 (10 bytes)
file 2 in dir Fri Apr 01 08:00:02 CEST 2005 (20 bytes)
20 abc Fri Apr 01 08:01:00 CEST 2005 [DIR]
3 abc Fri Apr 01 08:02:00 CEST 2005 [DIR]
abc Fri Apr 01 08:03:00 CEST 2005 [DIR]
file 1 in dir Fri Apr 01 08:03:01 CEST 2005 (30 bytes)
file 2 in dir Fri Apr 01 08:03:02 CEST 2005 (40 bytes)
3 abc.txt Fri Apr 01 08:04:00 CEST 2005 (10 bytes)
20 abc.txt Fri Apr 01 08:05:00 CEST 2005 (20 bytes)
100 abc.txt Fri Apr 01 08:06:00 CEST 2005 (30 bytes)
-1 abc.txt Fri Apr 01 08:07:00 CEST 2005 (40 bytes)
-20 abc.txt Fri Apr 01 08:08:00 CEST 2005 (50 bytes)
-abc.txt Fri Apr 01 08:09:00 CEST 2005 (60 bytes)
abB.txt Fri Apr 01 08:10:00 CEST 2005 (70 bytes)
abc.txt Fri Apr 01 08:11:00 CEST 2005 (80 bytes)
abc1.txt Fri Apr 01 08:12:00 CEST 2005 (90 bytes)
abD.txt Fri Apr 01 08:13:00 CEST 2005 (100 bytes)
---------------------------------------------------------------------------
Also ich werd jetzt mal für den Anfang :autsch: mit Teil 1 beginnen!
Momentan kann ich mir noch nicht viel drunter vorstellen!
Ich glaub, ich beginn mal damit, die Klassenhierarchie aufzubauen!
Welche Klassen brauch ich da?
Hat jemand einen Vorschlag?
Ich glaub ich nehm hier das Pattern Composite, oder? ...also mit einer abstrakten Überklasse, von der sich dann
FileNode und DirectoryNode ableiten!
Dann könnte ich noch eine SortedSet verwenden für das Ordnen der Elemente! Ordnen tu ich das mit der Methode compareTo()!
Hat jemand einen besseren Vorschlag für den Anfang?
Oh Mann..du Generics sind dann natürlich oben drein noch ein anderes Thema! :###
Also ihr seht, ich hab viel zu tun bis nächsten Dienstag!
Ich hoffe, ihr zeigt wieder so viel Hilfsbereitschaft wie bisher!
Danke!
ciao,Tommy