Dataeisystem entwerfen

iwanlenin

Grünschnabel
Hi an alle Java-Experten

Habe folgende Aufgabenstellung: Es soll ein Datei-System entworfen werden in Java... (für ein Simuliertes Betriebsystem). Die Theorie wie ein Dateisystem aufgebaut sein soll habe ich... was ich nicht habe sind Kenntnisse bezüglich der Sprache Java, na ja Grundkenntnisse habe ich schon. ist ja auch egal. Es soll eine Datei werden z.B. Festplatte.fh vom Wirtssystem gesehen für das Betriebsystem selber soll es wie eine Festplatte aussehen also irgendwas mit Blöcken drin
Gibt es in Java irgendwas was dazu am besten passen würde? (es soll ein persistenter speicher werden)
Danke schon mal im Voraus
 
Hi,

mal von der für diese Zwecke völlig ungeeigneten Programmiersprache abgesehen, hast du dir schon Gedanken gemacht wie du das genau umsetzen willst?

Hier gibt es mehrere Ansätze; Ältere / Einfachere oder neuere / stabilere / komplexere Systeme.

Wenn es nurganz simpel sein soll, dann würde ich hier eher zu einem FAT Dateisystem greifen, die sind gut dokumentiert und du musst eigentlich nur den Vorgaben folgen.

Vom Prinzip her öffnest du deine Festplatte.fh in einer Klasse und bietest eine Schnittstelle für andere Klassen zum Dateizugriff an. Zum Beispiel Methoden wie:
  • String[] dir_list(String virt_pfad)
  • boolean dir_make(String virt_pfad)
  • boolean dir_delete(String virt_pfad)
  • byte[] file_read(String virt_pfad)
  • long file_size(String virt_pfad)
  • boolean file_write(String virt_pfad, byte[] data)

Das wären mal die rudimentärsten Methoden um mit dem System zu interagieren, natürlich kannst du das dann noch ausbauen und erweitern, je nach Bedarf.

// Edit:
was ich nicht habe sind Kenntnisse bezüglich der Sprache Java, na ja Grundkenntnisse habe ich schon.
Dann viel Spaß bei der Umsetzung. Das Thema ist so schon komplex genug und wenn man keine Kenntnisse in der Programmiersprache hat, in der das umgesetzt werden soll, dann sollte man lieber die Programmiersprache wechseln.

Gruß
BK
 
Zuletzt bearbeitet:
Die Sprache ist vorgegeben... Hab mal ein wenig gelesen... ist nicht die klasse Araylist oder so dafür richtig? oder LinkedList... es soll ungefähr wie auf dem bild aussehen (Schematisch) wobei jede spalte eine Speicherzelle für ein String (z.B eine Zeile aus der Textdatei) und jedes Kästchen ein Block ist

womit kann man so was abbilden
 

Anhänge

  • festplatte.jpg
    festplatte.jpg
    18,4 KB · Aufrufe: 14
Zuletzt bearbeitet:
Hi,

ich würde hier eher mit einer HashMap<String, byte[]> arbeiten.
Der Schlüssel ist der Pfad, der Wert ist der Inhalt. Somit hast du zum Beispiel folgenden Inhalt:

daten.get("/test.txt");
daten.get("/ordner1/test2.txt");

Über Serialisierung / Deserialisierung kannst du das ganze dann relativ simpel umsetzen, wobei halt da das Problem ist, dass alle Daten der Festplatte immer neu geschrieben werden müssen.

Gruß
BK
 
es soll schon möglich einzelne "Blöcke" zu schreiben. HashMap ist doch auch irgendwas von den collections oder? hab so ein Gefühl das es urgendwas mit Collections zu tun hat. Hab Gedacht eine doppelt verkettete liste wo in jedem Listenelement ein Array mit n Stringzellen... oder so
 
Hi,

würde hier nicht mit Strings arbeiten, da du ja auch Binärdaten speichern willst, oder?

Wenn du in die Java API reinschaust (klick), dann siehst du, dass eine HashMap eigentlich nichts mit einer LinkedList zu tun hat. Du kannst dir eine HashMap wie eine Datenbanktabelle vorstellen die 2 Spalten hat. Einmal den Schlüssel udn einmal den Wert des Schlüssels. Im Datenbankschema wäre der Schlüssel halt der PRIMARY KEY und der Wert ein BLOB.

Gruß
BK
 
Zurück