Dateien lesen/schreiben - C++ <-> Java

  • Themenstarter Themenstarter FreeCastle
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
F

FreeCastle

Gast
Es gibt ja Textdateien und Binärdateien.
Wenn ich jetzt mit Java eine normale Textdatei erstelle, nehme ich an, dass ich die auch problemlos wieder mit C++ lesen kann.
Aber wie sieht es mit Binärdateien aus ? Da muss man doch sicherlich einige Dinge beachten, so dass ich eine mit Java geschriebene Binärdatei nachher auch wieder aus einem C++ Programm lesen kann oder ?
 
binärdaten?

sprich 0 und 1?

Jo, die werden bei java anders aussehen 😀 2 und 3 😉


Einzige Problem was dir auftreten kann, sind die verschiedenen Codecs!

Ob utf-8 oder ascii, etc..

Nur das hat nix mit java zum tun, sondern ist allg. zu sehen!

Wennste mit C ein file in utf kodierung schreibst und via ascii kodierung auslest, haut das genausowenig hin, als wenn ein java programm dabei beteiligt gewesen wäre!
 
Naja man kann ja in C++ eine Integer Variable z.B. einfach als Text reinschreiben, oder eben im Binärmodus, d.h. es wird egal wie groß diese Zahl ist immer 4 Bytes geschrieben, also z.B. so:

Code:
int i = 10000000;
write( FileDesc, &i, sizeof(int) );

Und das ist eben meine Frage: Wenn ich z.B. mehrere Integer in Java binär in ne Datei schreibe, ob ich die dann wieder lesen kann ? Ich glaube ich müsste sowieso nur Integer (und Strings) schreiben...
 
Das kann schon aus dem Grund schiefgehen, da in C++ weder die
Länge eines Ints geschweige denn sein Binärformat definiert ist.

Aber probier es doch einfach für dein System aus.
 
Leroy42 hat gesagt.:
Aber probier es doch einfach für dein System aus.
Besser nicht. Damit würde er sich auf ein Verhalten verlassen, das nur in bestimmten Fällen zutrifft.

Wichtiger ist zu wissen, wie genau das Dateiformat aufgebaut ist. Das ist quasi die vereinbarte Schnittstelle. Wenn das Format nur vom Zufall abhängig ist, welche Sprache auf welcher Architektur verwendet wurde, sollte das Format neu spezifiziert werden.
 
Ausser Big/Little-Endian-Problemen kann nichts passieren.

Du musst nur wissen welcher Datentyp in Java welchem in C++ entspricht, z.B. gibt es in Java keine unsigned Datentypen und Javas Typen int und long heißen in manchen anderen Sprachen long und quad. C++ kenne ich zu wenig um hierzu was zu sagen.

Aber Ganzahlen (byte, short, int, long) werden immer im Zweierkomplement und Fließkommazahlen (float, double) ebenfalls nach festgelegtem Standard gespeichert. Wenn du also binär bspw. ein 64-bit-double mit C++ in eine Datei schreibst, erhälst du in Java dieselbe Zahl. Ich habe noch nie von einer Programmiersprache gehört, die eigene Formate für primitive Datentypen hat.

Big/Little-Endian könnte Problemen auf PowerPC-Macs machen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben