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

相关文章
相关标签/搜索