代码之家  ›  专栏  ›  技术社区  ›  adam

在java中读取文件偏移量时出现问题

  •  0
  • adam  · 技术社区  · 2 年前

    我必须从二进制文件中读取字节、整数和长数据大小的数据。我读过 RandomAccessFile 的方法 readInt , readLong , readByte 问题是系统的端序 (Windows 8.1)和文件的端序不同。例如,这个数字 enter image description here 文件中实际上是数字 2 ,但它从系统中读取为 33554432 .

    我如何解决这个问题,并能够使用读取数据块 随机访问文件 的方法?

    0 回复  |  直到 10 年前
        1
  •  5
  •   user207421    10 年前

    问题是系统的端序。。。并且文件的字节序不同。

    不,它们是一样的。看看数据。最低有效字节位于开头。这是小端序,即Intel端序。( 不是 “Windows端序”,AFAIK除了特定平台外不存在)。

    问题是文件和系统的字节序都是小字节序,但是 RandomAccessFile 是大端序。

    在Java中解决这个问题的方法是通过NIO和 ByteBuffer ,使用本机字节顺序而不是默认顺序。