Datei von hinten einlesen (rückwärts)

danielandross

Erfahrenes Mitglied
Hallo zusammen,
ich baue mir hier gerade ne Dateierkennung und muss in diesem Zusammenhang auch zB die letzten x Bytes einlesen. Ich mache das bisher so indem ich die File.length()-X rechne und an dieser Stelle einlese. Das Problem ist wenn ich das zB bei einer jpg Datei mache dann zeigt er mir eine falsche Länge an. Es fehlen bei jpg zB 4 Bytes (mit Hexworkshop überprüft).
Wisst ihr wie ich an solche Footer rankommen kann?
 
Wenn du keine andere Lösung findest kannst du es auf diese Weise machen.

1.File einlesen und in Stringbuffer schreiben
2.Stringbuffer drehen (reverse);
3. Teile des Stringbuffers auslesen.

Ist aber keine gute Lösung find ich.
 
@ Thomas: weil Chef ;)

@ Schnacki: habs mal probiert. So eine reverse Methode hab ich in der String Klasse nicht gefunden. Dann wollte ichs manuell mit nem byte array machen das ich in ner for-Schleife umdrehe aber da sagt er mir gleich beim 1. kopiervorgang(letztes Feld im inputarray auf das erste Feld des outputArrays) eine IndexOutOfBoundexception obwohl beide Arrays gleichgroß sind, nämlich File.length.
 
Zuletzt bearbeitet:
Hallo,

na ja, wenns nur um die Erkennungs von Dateitypen geht halte ich das für den falschen Ansatz... das geht mit javax.activation viel einfacher...

Aber gut.
Also wenn du bei einem file mit length() die Größe nimmst bekommst du diese in bytes. Wenn du nun xx Bytes zurück gehst kommst du an die entsprechende Position im File.
Wenn du nun mit einem RandomAccessFile per seek(...) an die entsprechende Stelle springst musst du aufpassen wie du die Daten genau ausliest. Wenn du sagsts das da ein paar bytes Fehlen würden, könnte das darauf hindeuten, dass du das einfach nicht richtig ausliest...

Gruß Tom
 
Zurück