たとえば、CIには次の構造があります。
typedef struct {
int number;
double x1;
double y1;
double x2;
double y2;
double x3;
double y3;
} CTRstruct;`
次に、それをファイルに書き込みますfwrite(&tr, 1, sizeof(tr), fp);
(tr-そのCTRstruct var、fp-ファイルポインター);
それから私はそれをJavaで読む必要があります!私は本当にファイルから構造体を読み取る方法を知りません...私はそれをで読み込もうとしましたObjectInputStream()
、最後のアイデアはで読むことRandomAccessFile()
ですが、私も方法がわかりません...(readLong(), readDouble()
これも機能しません、それはコースで機能しますただし、正しいデータは読み取れません)。では、JavaでバイナリファイルからC構造体を読み取る方法はありますか?
面白い場合は、整数を読み取るための私のバージョン(しかし、それは醜いです、そして私は何をすべきかわかりませんdouble
):
パブリッククラスMyDataInputStreamはDataInputStreamを拡張します{
public MyDataInputStream(InputStream AIs) {
super(AIs);
}
public int readInt1() throws IOException{
int ch1 = in.read();
int ch2 = in.read();
int ch3 = in.read();
int ch4 = in.read();
if ((ch1 | ch2 | ch3 | ch4) < 0)
throw new EOFException();
return ((ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0));
}
doubleを使用すると、同じ方法で処理できます(intまたはlong(8bytes)を使用してから、ネイティブ関数を使用してdoubleに変換します)。