Android 保存short数组

保存short类型,官方只提供了一个writeShort()的接口,这个接口一次只能写一个字符,不能写数组,于是就是如下代码:

//保存short格式的文件
public static void saveShortArrayToBin(short[] vArr, String vPath) {
    FileOutputStream fos;
    DataOutputStream dos;
    try {
        fos = new FileOutputStream(vPath);
        dos = new DataOutputStream(fos);
        for (short f:vArr)
        {
            dos.writeShort(f);
        }
        dos.flush();
        fos.flush();
        dos.close();
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

然而这个方法要反复的开流写数据,所以会存的非常慢。想要把速度提上去就要先把short数据转成byte数组,全部转完以后再用存byte数组的接口进行写操作。
以下是先把short转出byte数组再保存,其中要留意大小端转换。

public static void saveShortAsByteToBin(short[] vArr, String vPath) {
    FileOutputStream fos;
    DataOutputStream dos;
    try {
        fos = new FileOutputStream(vPath);
        dos = new DataOutputStream(fos);
        byte[] bytes = new byte[vArr.length*2];
        for (int i = 0;i<vArr.length;i++){
            bytes[i*2] = (byte)(vArr[i] & 0xFF);
            bytes[i*2+1] = (byte)((vArr[i]>>8) & 0xFF);
        }
        dos.write(bytes);
        dos.flush();
        fos.flush();
        dos.close();
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

保存float数组请看:Android 保存float数组 大端转小端
保存byte数组请看:android byte格式文件保存,追加保存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值