保存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格式文件保存,追加保存