Java 按字節讀寫二進制文件

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

相關文章
相關標籤/搜索