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

转载于:https://www.cnblogs.com/haizige/p/4508530.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值