gpt4 book ai didi

java - 使用 Java 向后读取二进制文件

转载 作者:行者123 更新时间:2023-11-30 05:58:04 24 4
gpt4 key购买 nike

我通常使用以下方式读取二进制文件:

//What I use to read in the file normally
int hexIn;
for(int i = 0; (hexIn = in.read()) != -1; i++){
}

我需要做的是向后读取文件,我已经尝试过类似的操作...但它不起作用!我查看了很多帮助页面,但找不到任何内容,希望您能帮助我。

//How im trying to read in the file backwards
for(long i = 0, j = length - 1; i < length; i++, j--){
int hexIn = 0;
hexIn = in.read();
}

只是为了使事情复杂化,我正在读取二进制文件并将其转换为十六进制

//This makes sure it does not miss and 0 on the end
String s = Integer.toHexString(hexIn);
if(s.length() < 2){
s = "0" + Integer.toHexString(hexIn);
}

假设正常读取的十六进制是

10 11 12 13 14 15 

如果向后读取,则会按

读取
51 41 31 21 11 01

我需要阅读它

15 14 13 12 11 10

有人有想法吗?因为我对它们一无所知,连我值得信赖的 Java 书籍也不知道!

最佳答案

您根本不想“读取”该文件。您想要做的是使用 FileChannel 和覆盖在文件顶部的 MappedByteBuffer,然后简单地反向访问字节缓冲区。

这可以让主机操作系统为您管理从磁盘中实际读取 block 的过程,而您只需在循环中向后扫描缓冲区即可。

看看这个page了解一些详细信息。

关于java - 使用 Java 向后读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4841148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com