2016-04-15 4 views
1

Also mache ich ein Projekt für die Schule, wo ich in einer binären Datei lesen und verwenden, um Statistiken, wie Stärke und Weisheit, für die Charaktere zu machen. Es ist so eingerichtet, dass die ersten 8 Bits ein Stat bilden.Wie lese ich binäre Dateien in Java

Ich fragte mich, was die eigentliche Syntax dafür ist. Ist es so, als würde man Textdateien lesen?

File file = new File("CharacterStats.dat"); 
Scanner inputScanner = new Scanner(file); 

inputScanner.next(); 

Antwort

3

Statt eines Scanners Sie so etwas wie diese verwenden würde:

File file = new File("CharacterStats.dat"); 
FileInputStream fis = new FileInputStream(file); 
ObjectInputStream ois = new ObjectInputStream(fis); 
YourClass object = (YourClass) ois.readObject(); 

Wo die dritte Zeile Sie erstellen ein neues Objekt aus dem Stream und Gießen es auf das Objekt Sie wollen. Sie müssen dies tun, weil Java nicht wissen kann, welches Objekt eingelesen wird.

EDIT: Dies ist zum Einlesen der Binärdaten als serialisierte Objekte. Ich habe deine Frage vielleicht falsch interpretiert, weil deine "Statistiken" Objekte sind.

+0

Dank. Aber wie kann ich nun auf alle Einsen und Nullen zugreifen, um sie zu verwenden? Tut mir leid, aber ich habe wirklich nur Erfahrung in Textdateien zu lesen. – Ionterac

+0

Sie nicht. Das ist die Methode "readObject()" von ObjectInputStream für Sie. Es interpretiert die Binärdatei aus der Textdatei als Java-Objekt. Allerdings müssen Sie dem Compiler dann sagen, was ** art ** of Object es wirklich ist, was Sie durch Casting tun. –

+0

Also, wenn ich es als ein Int handelt, wird 010010 automatisch in 18 konvertiert? Entschuldige, dass du so viele Fragen gestellt hast, dass du viel hilfst. – Ionterac

3

Wenn Sie JDK verwenden 7+ der einfachste Weg wäre:

Path path = Paths.get("CharacterStats.dat"); 
byte[] fileContents = Files.readAllBytes(path); 

Und dann mit diesem Array zu tun, was Sie wollen.

Da ein Byte 8 Bits enthält, können Sie die ersten 8 Bits durch fileContents[0] zugreifen und dann wahrscheinlich den Fluss Ihres Programms mit bitwise operations steuern.

1
String fileChar; 
FileReader fileReader = new FileReader("read_data_file.dat"); 
BufferedReader bufferReader = new BufferedReader(fileReader); 

while((fileChar = bufferReader.readLine()) != null){ 
    System.out.print(fileChar); 
} 

bufferReader.close(); 

Filereader verwendet Datei zu erhalten und das Objekt der Datei Leser in BufferedReader und dann Dateien drucken vergehen, bis null nicht gefunden wird (EOF - Ende der Datei Begegnung)

+0

Dies macht Text IO. Die Frage betrifft das Lesen von Binärdaten. – Functino