java - 用java读取二进制文件时,如何?

标签 java parsing search hex

如果您想从使用缓冲区读入的文件中找到某些十六进制值并最终将一段代码解析到输出文件,那么最好的方法是什么?我不是在寻找示例代码。

这是一个非常大的文件,需要多次解析。我应该将其全部读入数组吗?什么样的数组?这取决于搜索我正在寻找的十六进制值的最佳方式,并且我不确定如何在 java 中搜索十六进制值。

你会怎么做?

编辑:事件的完整顺序。

“抱歉,是的,我想这会令人困惑。完整的解释。将会发生的事情是我搜索标记字节模式。找到它。然后我将处理接下来的 1035 字节。第 12 个和第 13 个字节是一个值我需要进行一次检查,以及进行另一次检查的第 1034 和 1035 个字节。字节 14 是我需要解析到文件的 1016 个字节的开始。

事件的顺序应该是:首先检查,检查。进行第二次检查,检查。如果这些检查失败,则将某个常量字节值写入输出文件(作为标志)。如果它们正常,则将 1016 字节写入输出文件。”

最佳答案

需要多次解析吗?同时?不确定该要求意味着什么。

我可能会从简单开始。将十六进制搜索字符串转换为我正在查找的字节数组。使用 FileInputStream 从文件中一次读取几个字节,并记录当前文件字节与搜索字节匹配的字节总数。

bStream = new BufferedInputStream(new FileInputStream(file));
byte[] bytes = new byte[4096];
int read;
while ((read = bStream.read(bytes)) > 0) {
    // do these new bytes match the pattern I'm looking for
    // accounting for boundaries, etc
}

关于java - 用java读取二进制文件时,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16840945/

相关文章:

java - 为什么在java中加载类时委托(delegate)

java - 为每个租户自定义 Spring @Scope

html - 将纯文本列表转换为 html

c# - 如何根据字符串表示形式创建表示命名空间的树

search - 搜索字符串算法

python - 关于使我的 JSON find-all-nested-occurrences 方法更清晰的建议

java - 要求数据库引擎建议索引创建/删除

java - 如何在 cocos2d android 1 中创建 cocos2d 粒子效果?

parsing - 使用 pest 时如何修复枚举缺失的文档?

php - 使用 LIKE 语句搜索 MySQL 数据库