当前位置: 技术问答>java相关
100分求教IO问题
来源: 互联网 发布时间:2015-10-13
本文导语: 刚学Java不久,遇到一个问题: Java中的IO流库的读写次序和C++似乎不同?具体来说,就是一个从一个文件读出或者写入数值,Java是将最先读出的放在高位,最后读出的放在最低位;而我之前记得用MFC的CFile::Read()是最...
刚学Java不久,遇到一个问题:
Java中的IO流库的读写次序和C++似乎不同?具体来说,就是一个从一个文件读出或者写入数值,Java是将最先读出的放在高位,最后读出的放在最低位;而我之前记得用MFC的CFile::Read()是最先读出的是数值的最低位,最后读出的才是最高位。所以我现在用Java无法直接使用IO流库读入以前C++输出的文件。比方说,一个文件以Hex:10 00 00 00开头,我是在C++的库中以0x10的一个long型写入的,占4个字节;那么我现在用DataInputStream.readShort()读两个字节读出来是0x1000、若用.readInt()读4个字节出来则是0x10000000。请问Java为何要这样实现它的IO类?或者说像我这种情况该如何解决?我除了一个byte一个byte读没有其他办法了。
Java中的IO流库的读写次序和C++似乎不同?具体来说,就是一个从一个文件读出或者写入数值,Java是将最先读出的放在高位,最后读出的放在最低位;而我之前记得用MFC的CFile::Read()是最先读出的是数值的最低位,最后读出的才是最高位。所以我现在用Java无法直接使用IO流库读入以前C++输出的文件。比方说,一个文件以Hex:10 00 00 00开头,我是在C++的库中以0x10的一个long型写入的,占4个字节;那么我现在用DataInputStream.readShort()读两个字节读出来是0x1000、若用.readInt()读4个字节出来则是0x10000000。请问Java为何要这样实现它的IO类?或者说像我这种情况该如何解决?我除了一个byte一个byte读没有其他办法了。
|
用1.4的java.nio.ByteBuffer读吧,可以设置字节序
|
呵呵,谁让你用Java读C++写的文件呀
不过好像还真没办法,只好自己override掉了,烦
不过好像还真没办法,只好自己override掉了,烦
|
别忘了java是跨平台的,它的代码是由JVM来解释和运行的,和操作系统是无关的。