我正在尝试将音频(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();}
完成后需要关闭流