是否有任何用于二进制文件解析的Java框架?

2022-09-03 00:30:16

我的问题是,我想用一个用JAVA实现的通用解析器来解析不同类型的二进制文件。也许用解析器读取的配置文件来描述文件格式,或者创建Java类,根据某种解析规则解析文件。

我在互联网上搜索了不少,但几乎没有找到关于这个主题的任何东西。

我发现的只是处理编译器生成器(Jay,Cojen等)的东西,但我不认为我可以使用它们来生成解析二进制文件的东西。但我在这个假设上可能是错的。

是否有任何框架可以特别处理二进制文件的轻松解析,或者任何人都可以给我一个提示,如何使用解析器/编译器生成器来做到这一点?

更新:我正在寻找可以编写配置文件的东西,例如

file:
  header: FIXED("MAGIC")
  body: content(10)

content:
  value1: BYTE
  value2: LONG
  value3: STRING(10)

它会自动生成一些东西,解析以“MAGIC”开头的文件,然后是内容包的十倍(内容包本身由一个字节,一个长和一个10字节的字符串组成)。

Update2:我发现了一些与我正在寻找的“构造”相当的东西,但遗憾的是,这是一个Python框架。也许这有助于某人获得一个想法,我正在寻找什么。


答案 1

使用 Preon

public class File {

  @BoundString(match="MAGIC")
  private String header;

  @BoundList(size="10", type=Body.class)
  private List<Body> body;

  private static class Body {

    @Bound
    byte value1;

    @Bound
    long value2;

    @BoundString(size="10")
    String value3;

  }


}

解码数据:

Codec<File> codec = Codecs.create(File.class);
File file = codecs.decode(codec, buffer);

如果您遇到问题,请告诉我。


答案 2

试试


推荐