Ich habe eine Frage zu File: wie kann ich die Dateigrösse auslesen?
Soweit ich das in java.io.File sehe, hat das keine solche Methode - gibt es etwas ähnliches/anderes/andere Möglichkeit?
Ah ok vielen Dank, length funktioniert wunderbar.
Wie das nunmal so ist kommt gleich das nächste Problem...
Ich schreibe relativ schnell neue Daten in ein JPEG File (von einem Rechner), welche ich von einem anderen Rechner einlese.
Manchmal kommt es nun dazu, das genau während des schreibens darauf zugegriffen wird, was dann natürlich einen Fehler produziert..."Premature end of JPEG file"
Wie kann ich nun aus der angegebenen Datei die letzten Byte lesen um festzustellen ob die Datei bereits fertig geschrieben ist?
Das problem ist das ich nicht von Java aus schreibe, sondern aus einem anderen Programm, das diesbezüglich zimelich schmal auf der Brust ist. D.h. das einzige was mir bleibt ist zu lesen ob die Datei ihr EOF byte (oder was auch immer in einem JPEG als letztes steht) geschrieben hat..
Normalerweise kann eine Datei nur von einem Programm/Prozess/WasAuchImmer zum schreiben geöffnet werden. Du hast geschrieben, daß du die Dateien einliest, d.h. du greifst lesend darauf zu. Und das klappt auch, wenn ein anderes Programm noch reinschreibt. Du bekommst dann unvollständige Daten und deshalb schmeißt dir der JPEG-Decoder eine Exception um die Ohren.
immer warten, bis man exclusiven Zugriff bekommt:
Code:
FileLock lock = new FileOutputStream("bild.jpg").getChannel().lock();
lock.release();
...
tu was mit dem Bild
...
oder Bilder, die gerade geschrieben werden, einfach überspringen:
Code:
FileLock lock = new FileOutputStream("bild.jpg").getChannel().tryLock();
if ( lock != null ) {
lock.release();
...
tu was mit dem Bild
...
}
Hmm, ja, hab das grad nochmal probiert. Innerhalb von Java klappt das prima, wenn extern geschrieben wird irgendwie nicht Du müsstest dem externen Programm irgendwie beibringen, daß es die Bilder exclusiv schreibt ...
Ansonnsten bleibt nur noch die Variante, nach einer JPEG-Exception es einfach nochmal zu probieren.
EDIT: weitere Möglichkeit:
Bilder erst in ein temoräres Verzeichnis schreiben und dann verschieben.
Ok vielen Dank.
Das mit dem Lock ist gut zu wissen, leider ist das andere Programm nicht dazu zu bringen die Datei zu locken. Aber ich find schon einen Weg das rauszubekommen.
Danke nochmal an alle! Superforum!