我目前正在尝试找到在Java中搜索一个2GB二进制文件的最快方法。这与我的正常问题不同,因为该文件已经通过mmap映射到Linux文件系统中。
这个文件是一个二进制文件,我需要搜索它以查找一个固定的四字节字符串; AXL0。
通常,在较小的文件上,我会将其缓冲,转换为字符串,然后使用正则表达式进行匹配。但是,由于该文件已经被内存映射,并且非常大,重新缓冲它的想法似乎是错误的,而将其转换为2GB字符串似乎更加错误...
阅读一些资料后,我发现了Java NIO包以及FileChannels和MappedByteBuffers,但我不确定如何设置它们。
我只需要从零到文件中的最后一个字节扫描文件,并定位每个四字节字符串的实例。
如果有人能提供一些建议或意见,我将非常感激。
谢谢。
这个文件是一个二进制文件,我需要搜索它以查找一个固定的四字节字符串; AXL0。
通常,在较小的文件上,我会将其缓冲,转换为字符串,然后使用正则表达式进行匹配。但是,由于该文件已经被内存映射,并且非常大,重新缓冲它的想法似乎是错误的,而将其转换为2GB字符串似乎更加错误...
阅读一些资料后,我发现了Java NIO包以及FileChannels和MappedByteBuffers,但我不确定如何设置它们。
我只需要从零到文件中的最后一个字节扫描文件,并定位每个四字节字符串的实例。
如果有人能提供一些建议或意见,我将非常感激。
谢谢。
mmap
的作用是相反的(将文件从文件系统映射到内存)。你使用哪个应用程序/命令来进行这种映射? - Fox