第一次轉到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