Speicherplatz reservieren

M_Kay

Mitglied
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 :suspekt: ... sieht im Datei-Browser aber gut aus :-)

Weiss jemand wie es richtig geht?

Gruss
M_Kay
 
Hm, das scheint leider nicht zu funktionieren.
Folgenden Code habe ich genutzt:
Code:
        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();
        }
Das erzeugt bei mir unter Kubuntu eine ca. 140 GB große Datei auf einer 50GB-Partition :rolleyes:
Sonst evtl. noch eine Idee? :)

EDIT: Eine Exception wird nicht geworfen^
 
Zuletzt bearbeitet:
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.
 
Zurück