第一次转到Java平台。。。。不熟练,这边记录一下我用Java来处理二进制的文件java
如今在作的是一个超大的二进制文件,后缀名竟然是txt,我按照文本读的,结果全是乱的。。。后来才知道这玩意是二进制文件。。函数
发现java中有超级多的读二进制的方法,也是分大小端,用起来还都算方便。。spa
先说按照数据类型读取———readChar(); readDouble(); readFloat(); readLong(); readShort(); readUTF();等一大堆这样的函数简单易用,可是仅仅是按照这样读取效率会低,由于文件存在硬盘中,屡次对于磁盘IO会比内存中处理差了很多。。数据量比较大,因此这些还都是要考虑的。。。因此我在实际作的时候选了下面的方法.net
一次性读取不少个字节,而后按照字节的顺序再转换成各类类型,就是byte[]转换为int, short等,至于转换成double, float我这里没用到,不写进来了。。code
读字节 blog
1 File file = new File(fileName); 2 in1 =new FileInputStream(file); 3 data_in = new DataInputStream(in1); 4 byte[] itemBuf = new byte[888]; 5 data_in.read(itemBuf, 0, 888);
这里是byte[]转int和short的方法内存
public static short getShort(byte buf1, byte buf2) { short r = 0; r |= (buf1 & 0x00ff); r <<= 8; r |= (buf2 & 0x00ff); return r; } public static int getInt(byte buf1, byte buf2, byte buf3, byte buf4) { int r = 0; r |= (buf1 & 0x000000ff); r <<= 8; r |= (buf2 & 0x000000ff); r <<= 8; r |= (buf3 & 0x000000ff); r <<= 8; r |= (buf4 & 0x000000ff); return r; }
用这种方法就能够把byte转换成int或者short类型的了,再一个就是大小端的问题,这是大端的作法get
对于大小端自动区别我这里记录一个更加详细的方法it
http://blog.csdn.net/tengdazhang770960436/article/details/7444627class