只有前几百个样本从输入流读入字节数组(其余为零)



我正在尝试将音频(mp3/wav等)转换为字节数组。我使用inputStream到字节数组的转换。问题是,在几百个样本之后,我只得到0。起初我认为问题出在文件上,所以我试着用另一个文件调试,也遇到了同样的问题。我认为问题是与代码,所以我尝试使用ioutil,并得到了完全相同的结果。

谁能告诉我我做错了什么?

我使用的代码:

File file = new File(path);
final InputStream inputStream = new FileInputStream(file);
byte[] byteSamples = inputStreamToByteArray(inputStream);
 public byte[] inputStreamToByteArray(InputStream inStream) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[8192];
        int bytesRead;
        while ((bytesRead = inStream.read(buffer)) > 0) {
            baos.write(buffer, 0, bytesRead);
        }
        return baos.toByteArray();
    }

使用IOUtils:

的替代版本
byte[] byteSamples = IOUtils.toByteArray(inputStream);

更新:我尝试使用BufferedInputStream,仍然是完全相同的结果。

byte[] byteSamples = new byte[(int)file.length()];
    try {
        BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
        buf.read(byteSamples, 0, byteSamples.length);
        buf.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();}

完成后需要关闭流

最新更新