我有一個用C編寫的二進制文件,我想用java讀取它。我寫的文件用C這樣的:閱讀從C用Java編寫的文件
void Log(TCHAR *name,int age){
write_int(file, 2012);
write_int(file, 4);
write_int(file, 16);
write_int(file, 12);
write_int(file, 58);
write_int(file, 50);
fwrite(&name, sizeof(name), 1, file);
fwrite(&age, sizeof(age), 1, file);
fflush(processusFile);
}
在Java中我用http://www.heatonresearch.com/code/22/BinaryFile.java的BinaryFile
類和我這樣做:
RandomAccessFile f = new RandomAccessFile("myfile.dat", "r");
BinaryFile binaryFile = new BinaryFile(f);
ArrayList<String> text = new ArrayList<>();
while (true) {
try {
Calendar calendar = new GregorianCalendar();
int year = (int) binaryFile.readDWord();
int month = (int) binaryFile.readDWord();
int date = (int) binaryFile.readDWord();
int hourOfDay = (int) binaryFile.readDWord();
int minute = (int) binaryFile.readDWord();
int second = (int) binaryFile.readDWord();
calendar.set(year, month, date, hourOfDay, minute, second);
System.out.println(binaryFile.readFixedString(64));
catch (Exception e) {
break;
}
}
這不是對於char *工作,但對於int它的工作原理。我如何寫字符串?
我這樣做的C代碼,調用我的函數使用參數( 「測試名」,44 )但在Java中,當我這樣做:''System.out.println(「>」+長度+「>」+ binaryFile.readFixedString(長度));'我有這個在:> 8>?@ – jadou 2012-04-16 16:03:44
@khelch我假設你在閱讀字符串之前閱讀了長度,對吧? – dasblinkenlight 2012-04-16 16:09:47
是的,我有這條指令'int length =(int)binaryFile.readDWord();'在System.out之前 – jadou 2012-04-16 16:18:07