ich bin ein ziehmlicher Java-Anfänger, hab aber mit anderen Programmiersprachen Erfahrung.
Ich wollte in Java einen Dateiheader in mehrere Variablen einlesen. In C geht das total einfach mit der read Methode, der man eine entsprechende Datenstruktur übergibt.
Kann mir vieleicht jemand sagen wie ich das in Java verwirkliche.
Habe es bisher nur geschafft eine Datei in nen char[] einzulesen, brauche aber z.B. die ersten beiden Byte in nem short.
du must nur den richtigen Inputstream verwenden. Spontan empfele ich einen ObjectInputStream, der kann Objecte und Primitive datentypen einzeln einlesen. Es gibt vieleicht noch einen geeigneteren, am besten schaust dir java.io mal genauer an.
Bei den Primitiven Datentypen musst du sie einzeln einlesen. Ausser bei bytes. Dafür gibt es die Methoe read(byte[]...) die schreibt dir mehrere byte in den Array. Wenn du mehrere Zeichen einlesen willst solltest du den BufferedReader verwenden, der kann ganze Zeilen als Strings einlesen.
Wenn du immer die gleiche anzahl an zeichen einlesen musst, solltest du dir überlegen nicht einen eigenen InputStream zu schreiben, der dann die Methoden von DataInputStream verwendet, und dir die gewünschten Zeichen zurückliefert.
Ich empfehle das oben genannte Vorgehen ueber ObjectInput/OutputStream! Schreibe dir eine eigene Klasse FileHeader (oder so) und schreibe und lese ein solches Object dann direkt mit einem Befehl!
Code:
class FileHeader implements Serializable{
String value1 = "test";
int value2 = 2;
// hier nen paar zugriffsmethoden
}
Gibt es einen Grund, warum du Serialisable implementierst? Bisher habe ich das Interface nur bei Klassen verwendet, die ich Serialisieren will, und nicht bei welchen, die serialisieren sollen.
Den gibt es! Eigene Objekte, wie in diesem Fall FileHeader muessen dieses Interface implementieren um mittels ObjectInput/OutputStream gelesen bzw. geschrieben werden zu koennen!
Fast alle Standardklassen sind schon serialisiert und bei einer Ableitung einer solchen Klasse muss das Interface nicht erneut eingebunden werden! Wir gehen hier aber direkt von Object ab und ich finde es schadet auch nicht, so sieht man, das man dieses Object lesen und schreiben kann!
Gibt es inzwischenzeit eine einfacherer Möglichkeit den Dateityp am Datei Header zu erkennen in Java?
Ich suche mir einen Wolf, eigtl möchte ich nur .rar, .ace und .zip Archive unterscheiden können.
Gibt es in Java jetzt ein Klasse die das kann, oder gibt es nur die Möglichkeit es selbst zu basteln wie in diesem Thread?