ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
365
365
EMPFEHLEN
-
Hi,
ich wollte mal fragen, wie man am einfachsten Speicherplatz für eine Datei reservieren kann. Wenn man also weiss, dass man gleich 200 MB auf die Platte schreibt, dann sollte man ja dafür sorgen, dass dieser Platz auch frei ist und nicht im Hintergrund von einem anderen Programm verbraucht wird.
Ich habe es mit RandomAccessFile.setLength() versucht. Unter Linux zeigt er mir auch die festgelegte Dateigröße der Datei an.
Das komische ist aber, dass ich die Größe auf 100 GB setzen kann, obwohl die Partition, auf der sich die Datei befindet, gerade mal 50 GB groß ist
... sieht im Datei-Browser aber gut aus 
Weiss jemand wie es richtig geht?
Gruss
M_Kay
-
08.10.08 00:07 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
setLength reserviert den Plattenplatz, schreibt ihn jedoch nicht (direkt) voll.
http://bugs.sun.com/bugdatabase/view...bug_id=4057701
Könntest ja mal versuchen mit setLength die entsprechende Größe zu definieren und dann mit seek bis ans Ende zu springen. Wenn da ne Exception kommt ist eben nicht mehr genug Platz frei.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hm, das scheint leider nicht zu funktionieren.
Folgenden Code habe ich genutzt:Das erzeugt bei mir unter Kubuntu eine ca. 140 GB große Datei auf einer 50GB-PartitionCode :1 2 3 4 5 6 7 8 9
long bytesNum = 153687091200L; try { RandomAccessFile raf = new RandomAccessFile(new File("/home/mkay/writefile"), "rw"); raf.setLength(bytesNum); raf.seek(bytesNum); raf.write(new byte[] {00}); } catch (Exception exc) { exc.printStackTrace(); }
Sonst evtl. noch eine Idee?
EDIT: Eine Exception wird nicht geworfen^Geändert von M_Kay (08.10.08 um 16:59 Uhr)
-
Du könntest erst mal Prüfen, ob der geforderte Platz überhaupt auf der Festplatte noch frei ist ( file.getUsableSpace(); ). Falls genügend Speicher vorhanden ist lässt du einfach eine Datei mit der gewünschten Größe mit Nullbytes vollschreiben. Bei 200 MB ( oder auch mehr ) sollte das nur wenige Sekunden dauern. Danach kann man mit nem RandomAccessFile die Nullbytes mit den gewünschten Daten überschreiben.
-
Hi d4rkY89. Das wäre meine Alternative gewesen. Aber hätte gedacht, dass es dafür bereits etwas gibt
Ähnliche Themen
-
[C++] Speicher reservieren als Funktion
Von Bumbbleman im Forum C/C++Antworten: 9Letzter Beitrag: 14.07.09, 15:44 -
[c] Speicherplatz für 99 int variablen reservieren
Von BastianW im Forum C/C++Antworten: 8Letzter Beitrag: 28.06.09, 21:29 -
NASM dynamisch Speicher reservieren
Von Schnacki im Forum Sonstige SprachenAntworten: 8Letzter Beitrag: 23.12.07, 13:15 -
C++ Speicher für Feld reservieren
Von kle-ben im Forum C/C++Antworten: 3Letzter Beitrag: 12.11.05, 22:34 -
Arbeitsspeicher reservieren
Von Matze82 im Forum JavaAntworten: 4Letzter Beitrag: 29.09.05, 15:27





Zitieren

Login





