java - 在 cpu 和空间低的 java (android) 中保存 short[]

标签 java android file-io pcm

在流式传输音乐时,我正在获取 short[] 类型的 pcm 数据,我想将其保存到我的 android 设备中的文件中,以便稍后再次播放(使用 AudioTrack)。我不希望音乐存储在内存和 CPU 上有效。

如何将 short[] 保存到文件,因为我没有看到任何函数 in.write(short[])?

我怎样才能减少保存这个文件的空间\cpu?

最佳答案

用 DataOutputStream 包装你的 FileOutputStream:

DataOutputStream doStream = new DataOutputStream(new BufferedOutputStream(fileOutputStream));
doStream.writeInt(numberArray.length); //Save size
for (int i=0;i<numberArray.length;i++) {
    doStream.writeShort(numberArray[i]); //Save each number
}

读回的方式相同:

DataInputStream diStream = new DataInputStream(new BufferedInputStream(fileInputStream));
int size = diStream.readInt(); //Read size
short[] data = new short[size]; //Create new array with required length
for (int i=0;i<size;i++) {
    data[i] = diStream.readShort(); //Read each number
}

关于java - 在 cpu 和空间低的 java (android) 中保存 short[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254804/

相关文章:

android - Xamarin 颜色导致构建错误

c++ - 如何优化写入大量文件的时间(从视频中保存帧)

java - 从 XML Schema 数据类型转换为 Java int

java - 将值与数组列表内的值进行比较

java - JPA - 从序列生成的 ID 始终为 0

java - 使用子属性和通配符的 Firebase 实时数据库查询

java - 在 Selenium Web Driver 中重定向之前如何验证点击的 URL 是否被打开?

android - 如何在多个设备上运行 Google CTS?

java - 如何查找和检索具有可更改日期后缀的完整文件名

无法将值从一个 double 值复制到另一个 double 值并且变量重置为 0