我有一个用 C 编写的二进制文件,我想用 java 读取它。我是这样用 C 写的文件:
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 中,我使用 BinaryFile
类 http://www.heatonresearch.com/code/22/BinaryFile.java我这样做:
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。我如何编写字符串?
最佳答案
这是因为sizeof(name)
是您系统上char
指针的大小,不是 字符串的长度。您还需要将长度与字符串分开写出。
size_t len = strlen(name);
write_int(file, len);
fwrite(&name, len, sizeof(char), file);
关于java - 使用 Java 从 C 语言编写的文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176368/