Java 随机存取文件结尾问题
我必须从二进制文件中读取字节、整数和长数据大小的数据。我用RandomAccessFile的方法阅读它,Java 随机存取文件结尾问题,java,stream,endianness,randomaccessfile,Java,Stream,Endianness,Randomaccessfile,我必须从二进制文件中读取字节、整数和长数据大小的数据。我用RandomAccessFile的方法阅读它,readInt,readLong,readByte。问题是系统的端点 (Windows 8.1)和文件的endiannes是不同的。例如,文件中的这个数字实际上是编号2,但它从系统中读取为33554432 如何解决此问题并能够使用RandomAccessFile的方法读取数据块 问题是系统的持久性。。。并且文件的结尾是不同的 不,它们是一样的。看看数据。最低有效字节位于起始位置。这就是小end
readInt
,readLong
,readByte
。问题是系统的端点
(Windows 8.1)和文件的endiannes是不同的。例如,文件中的这个数字实际上是编号2
,但它从系统中读取为33554432
如何解决此问题并能够使用RandomAccessFile
的方法读取数据块
问题是系统的持久性。。。并且文件的结尾是不同的
不,它们是一样的。看看数据。最低有效字节位于起始位置。这就是小endian,也就是英特尔endian。(非Windows endianness,除特定平台外,AFAIK不存在)
问题是文件和系统的尾数都是小尾数,而RandomAccessFile
是大尾数
在Java中解决这一问题的方法是通过NIO和ByteBuffer
,使用本机字节顺序而不是默认顺序
问题是系统的持久性。。。并且文件的结尾是不同的
不,它们是一样的。看看数据。最低有效字节位于起始位置。这就是小endian,也就是英特尔endian。(非Windows endianness,除特定平台外,AFAIK不存在)
问题是文件和系统的尾数都是小尾数,而RandomAccessFile
是大尾数
在Java中解决这个问题的方法是通过NIO和
ByteBuffer
,使用本机字节顺序,而不是默认的。您是否可以用ByteBuffer包装RandomAccessFile中的每个字节数组,然后对其重新排序?我仍然发现名称令人困惑:little endian意味着little在末尾。。。哦,不,在开始的时候。你能用ByteBuffer将RandomAccessFile中的每个字节数组包装起来,然后重新排序吗?我仍然发现名称令人困惑:little endian意味着little在末尾。。。哦,不,一开始。