如何使用FileInputStream将音频文件读入具有2个字节数据的数组中

时间:2016-06-03 23:45:29

标签: java char inputstream

换句话说,文件是用PCM_16bit写的,但那些数据存储为8位。我想用dsp对这个文件进行分析,但是如何以16位的时间读取该文件并将此16位形成为0-65535之间的一个整数。

1 个答案:

答案 0 :(得分:1)

不完全确定你要问的是什么,但如果你想要的是一次读取两个字节作为单个无符号值,你可以使用这样的东西:

File f = new File("/path/to/file");
DataInputStream dis = new DataInputStream(new FileInputStream(f));

List<Integer> values = new ArrayList<>();

try {
    while (true){
        values.add(dis.readUnsignedShort());
    }
} catch(EOFException e){
    /* you've read everything at this point */
} finally {
    dis.close();
}

您可以在此时将values更改为基本数组,或直接使用列表。