下面回答楼主在上一个主题上面提出的问题: 1. 使用 try 出现问题,有可能是 JDK 版本过低引起的吧? 由于没有实际的二进制文件,我写的代码没有实际运行过,要是出了问题,要么是JDK版本低,要么就是里面声明的对象不是 Closeable 接口的实现类。 2. UE打开的二进制文件,是以十六进制的形式显示给你的。 地址和数据要弄明白。BA 12 2A 43 这些不是地址,是数据。地址在左侧和上面,左侧你可以看做是行号,一行有16个字节,列数在上面写着呢,0~f 一共16列。数据,两个十六进制数据表示一个字节,硬盘文件以字节为单位。一个十六进制数只能表示4Bit,也就是半个字节,所以,要两个十六进制表示一个字节。 3. 浮点数的二进制表示法,这个百度应该差不多能查到,因为你给的是4字节的浮点数,Java 和 C 语言中都是 float 类型,你百度查那个语言的都行。 4. 大端和小端的问题。由于是多个字节(4字节)构成的数字,高位字节在前面还是低位字节在前面,就成了一个问题。在前面的意思就是地址比较低。 楼主给的数据,我试验了一下,应该是小端模式的数字,所以,在创建缓冲区的时候,设置了小端模式,否则,读取数据时,会出问题。 5. 使用 allocateDirect 创建内存的目的和你想的一样,就是效率比JVM堆要高一点,不用也可以,我感觉区别不大,因为,瓶颈在文件的读写速度上卡着呢。 6. 如果都是几百兆以上的大文件的话,还有内存映像文件这种技术来提高硬盘读写,不过,不太常用。
23,409
社区成员
70,524
社区内容
加载中
试试用AI创作助手写篇文章吧