Daten binär laden
-
Hey,
und zwar möchte ich .bsp (Quake 3) Files laden.
In c++ gar kein Problem:
//read in header fread(&header, sizeof(BSP_HEADER), 1, file);
Aber wie mache ich sowas in Java? Hab mich damit noch nie beschäftigt.
Die Datei habe ich per BufferedInputStream geöffnet, damit kann ich ja aber nur Bytes auslesen.Den String auszulesen ist kein Problem, da kann ich ja jedes Byte einzeln in ein Char konvertieren und dem String dazuaddieren. Gibt's da vielleicht auch eine bessere/einfachere Variante?
Und wie mache ich das bei einem Integer oder bei einem Float?
Wenn ein Integer 4 Byte lang ist, wie kann ich dann aus den 4 ausgelesenen Bytes einen Integer machen ?Vielen Dank
Strukturen für den Header:
/** * BSP file header */ public class BSP3Header { String magic; // Magic number. Always "IBSP". int version; // Version number. 0x2e for the BSP files distributed with Quake 3. BSP3DirectoryEntry[] direntries = new BSP3DirectoryEntry[17]; // Lump directory, seventeen entries. } /** * Directory entry in header */ public class BSP3DirectoryEntry { int offset; // Offset to start of lump, relative to beginning of file. int length; // Length of lump. Always a multiple of 4. }
:: edit ::
Okay, hab doch selbst was gefunden im Sourcecode der jMonkeyEngine. Dort wurde eine eigene Klasse geschrieben mit Methoden zum Laden von Integern, Shorts, Floats, Strings usw aus Binärdaten.Package: com.jme.util.BinaryFileReader
Source: http://www.jmonkeyengine.com/webstart/nightly/src.zip
-
Wenn das Format passt, gibts auch http://java.sun.com/j2se/1.4.2/docs/api/java/io/DataInputStream.html