java - 使用 Java 从 C 语言编写的文件中读取

标签 java c file binary

我有一个用 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 中,我使用 BinaryFilehttp://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/

相关文章:

java - JPA 中的 @OneToMany 关系且 IS NOT EMPTY

c - `sizeof(char*)` 总是等于 `sizeof(double*)` 吗?

Python-获取文件目录作为用户输入

java - 如何在使用 Mina 成功进行 SSL 握手后获取委托(delegate)人?

java - 加快数据库插入速度

c - 如何在调整窗口大小时暂停 GtkDrawingArea 绘制回调?

c - C中箭头运算符之间的空间

c# - 文件文件夹关联或归属

java - file.encoding 无效,LC_ALL 环境变量起作用

Java 8 : Fetching selective request parameters