beliebige Dateigröße setzen

  • Themenstarter Themenstarter Yumas
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
Y

Yumas

Gast
Hallo Allesamt,

ich würde gern die Größe einer Datei auf einen beliebigen Wert setzen ohne sie mit sinnlosem Inhalt aufzufüllen. Es gibt ja Funktionen wie setLength der RandomAccessFile class mit denen man die Größe durch auffüllen mit Nullen erweitert. Das hilft mir aber nicht weiter, denn ich habe vor ein File mit GigaByte Größe zu kreieren in dem aber nur einige MB mit entscheidenden Daten gefüllt sind. Hintergrund soll sein, das das File immer den kompletten Platz eines USB-Sticks ausfüllen soll, sodass nix zusätzlich drauf passt. Da ich mit den Daten arbeiten will kann ich natürlich nicht ewig auf Schreib und Lesezugriffe warten.
Gibt es eine Möglichkeit dem Dateisystem vorzugaukeln, dass die Datei größer sei als sie wirklich ist.

Gruß Yumas
 
Wo ist denn das Problem?

Bevor du deine Daten in die Datei schreibst, solltest du doch wissen können, wieviele Bytes du wirklich brauchst. Und ebenfalls weißt du, wieviel bytes auf dem Stick Platz haben.

Wenn du deine Daten jetzt wirklich auf den Stick schreibst, füllst du am Ende eben soviele FF oder 00 Bytes auf, wie noch Platz auf dem Stick ist. Fertig.

Beim auslesen solltest du halt wissen wie groß die Daten sind die du in der File gespeichert hast. Notfalls halt VOR die eigentlichen Daten einen Int oder Long-Wert platzieren, der die Anzahl an wirklich benutzen Bytes beschreibt, so dass du beim auslesen auf diese Information zurückgreifen kannst.

Anders wirds nicht wirklich gehen ...

- Alex
 
Wo ist denn das Problem?
@ tuxedo: Das es bei deinem Vorgehen (Auffüllen mit Nullen) ewig dauert bis ein File von bsp. einem Gig angelegt ist. Dennoch mach ich es bereits so, und versuche nur die Änderungen zu übernehmen und nicht das ganze File neu zu schreiben. Ist etwas mehr Arbeit, aber ich will mich ja nicht vor Arbeit drücken. 😀

Gruß Yumas
 
Ist es mit NIO nicht auch möglich eine Datei zu öffnen, an eine bestimmte Stelle zu springen und dort zu schreiben?! Bin mir nicht sicher, aber ich glaube das "könnte" gehen.

Wenn nicht, vielleicht ist es allg. schneller wenn du NIO Methoden zum schreiben der File nimmst.

- Alex
 
Geht doch auch mit Java:

Code:
RandomAccessFile raf = new RandomAccessFile(new File("TESTFILE"), "rw");
		long kilobyte = 1024;
		long megabyte = kilobyte*1024;
		long gigabyte = megabyte*1024;
		raf.setLength(gigabyte);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben