Java 按字節讀寫二進制文件


第一次轉到Java平台。。。。不熟練,這邊記錄一下我用Java來處理二進制的文件

現在在做的是一個超大的二進制文件,后綴名居然是txt,我按照文本讀的,結果全是亂的。。。后來才知道這玩意是二進制文件。。

發現java中有超級多的讀二進制的方法,也是分大小端,用起來還都算方便。。

先說按照數據類型讀取———readChar(); readDouble(); readFloat(); readLong(); readShort(); readUTF();等一大堆這樣的函數簡單易用,但是僅僅是按照這樣讀取效率會低,因為文件存在硬盤中,多次對於磁盤IO會比內存中處理差了不少。。數據量比較大,所以這些還都是要考慮的。。。所以我在實際做的時候選了下面的方法

一次性讀取很多個字節,然后按照字節的順序再轉換成各種類型,就是byte[]轉換為int, short等,至於轉換成double, float我這里沒用到,不寫進來了。。

讀字節

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類型的了,再一個就是大小端的問題,這是大端的做法

對於大小端自動區別我這里記錄一個更加詳細的方法

http://blog.csdn.net/tengdazhang770960436/article/details/7444627


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM