BufferedInputStream.read(byte [])导致问题.以前有人有这个问题吗?

K-R*_*RAN 1 java audio file-io

我写了一个Java程序,为我下载音频文件,我正在使用BufferedInputStream.read()函数工作正常,但实际上很慢,所以我尝试使用byte []来重载版本.

出于某种原因,下载后音频变得有损和奇怪.我不完全确定我做错了所以任何帮助都表示赞赏!这是代码的简化版本.

BufferedInputStream bin = new BufferedInputStream((new URL(url)).openConnection().getInputStream());
File file = new File(fileName);
FileOutputStream fop = new FileOutputStream(file);
int rd = bin.read();
while(rd != -1)
{
     fop.write(rd);
     rd = bin.read();
}
Run Code Online (Sandbox Code Playgroud)

Zek*_*eki 6

请记住,当您以字节读取时,read将返回实际接收的字节数.您需要将该计数传递给write,因为您的字节数组中可能包含无关数据.在最后一个数据块中尤其如此.