Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java读取二进制文件时,如何读取?_Java_Parsing_Search_Hex - Fatal编程技术网

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

用java读取二进制文件时,如何读取?,java,parsing,search,hex,Java,Parsing,Search,Hex,如果您想从正在使用缓冲区读入的文件中找到某些十六进制值,并最终将一段代码解析为输出文件,那么最好的方法是什么?我不是在寻找示例代码 这是一个非常大的文件,需要多次解析。我应该把它全部读入一个数组吗?什么样的阵列?这将取决于搜索我正在寻找的十六进制值的最佳方式,我不确定如何在java中搜索十六进制值 你会怎么做 编辑:事件的完整序列 “对不起,是的,我想这会让人困惑。完整的解释。接下来我将搜索标记字节模式。找到它。然后我将处理接下来的1035字节。第12和第13字节是我需要检查的值,第1034和1

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

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

你会怎么做

编辑:事件的完整序列


“对不起,是的,我想这会让人困惑。完整的解释。接下来我将搜索标记字节模式。找到它。然后我将处理接下来的1035字节。第12和第13字节是我需要检查的值,第1034和1035字节是另一个检查的值。字节14是我需要解析到文件的1016字节的开始


事件的顺序应该是:获取第一个检查,检查。拿第二张支票,支票。如果这些检查失败,则将某个常量字节值写入输出文件(作为标志)。如果它们良好,将1016字节写入输出文件。”

内存映射IO,使用文件通道….

内存映射IO,使用文件通道….

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

我可能会从简单开始。将十六进制搜索字符串转换为我要查找的字节数组。使用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
}

需要多次分析?同时?不确定该要求的含义

我可能会从简单开始。将十六进制搜索字符串转换为我要查找的字节数组。使用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
}

抱歉,是的,我想这会让人困惑。完整的解释。接下来我会搜索标记字节模式。找到它。然后我会处理接下来的1035个字节。第12和13个字节是我需要检查的值,第1034和1035个字节是另一个检查的值。第14个字节是我需要解析的1016个字节的开始事件的顺序应该是:获取第一个检查,检查。获取第二个检查,检查。如果这些检查失败,将某个常量字节值写入输出文件(作为标志)。如果它们正常,请将1016字节写入输出文件。是的。您可以使用上述代码。找到标记后,退出循环,读取下一个2000字节或您需要的任何内容,以便进行解析工作。您可能需要将最后一个字节[4096](或两个)添加到工作副本(System.arraycopy)中,因为它通常除了标记外还包含字节。顺便说一句,我喜欢你在《满屋》中的作品对不起,是的,我想那会让人困惑。充分解释。接下来我将搜索标记字节模式。找到它。然后我将处理接下来的1035字节。第12和第13字节是我需要检查的值,第1034和1035字节是另一个检查的值。字节14是我需要解析到文件的1016字节的开始。事件的顺序应该是:获取第一个检查,检查。拿第二张支票,支票。如果这些检查失败,则将某个常量字节值写入输出文件(作为标志)。如果它们良好,则将1016字节写入输出文件.yes。您可以使用上面的代码。找到标记后,退出循环,读取下一个2000字节或任何您需要的数据,以便进行解析工作,然后进城。您可能必须将最后一个字节[4096](或两个)添加到工作副本(System.arraycopy)中,因为它通常包含标记之外的字节。顺便说一句,我喜欢你在《满屋》中的作品。