Я создал двоичный файл, используя следующий код Matlab:
x is an array of int32 numbers
n is the length of x
fid = fopen("binary_file.dat", "wb");
fwrite(fid, n, 'int32');
fwrite(fid, x, 'int32');
fclose(fid);
Я могу использовать следующий код C для чтения этого файла:
fp = fopen("binary_file.dat", "rb");
int n;
fread(&n, 4, 1, fp);//read 4 bytes
int *x = new int[n];
for (int i = 0; i < n; i++)
{
int t;
fread(&t,4, 1,fp);//read 4 bytes
x[i] = t;
}
......
Приведенный выше код C может считывать правильные результаты. Однако сейчас я хочу прочитать такой двоичный файл в JAVA. Мой код отображается следующим образом:
DataInputStream data_in = new DataInputStream(
new BufferedInputStream(
new FileInputStream(
new File("binary_file.dat"))));
while(true)
{
try {
int t = data_in.readInt();//read 4 bytes
System.out.println(t);
} catch (EOFException eof) {
break;
}
}
data_in.close();
Он завершается после n + 1 циклов, но результаты неверны. Кто-нибудь может мне помочь. Большое спасибо!