我编写了一个 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();
}
最佳答案
请记住,当您以字节为单位读取时,read 将返回实际接收到的字节数。您需要传递该计数以写入,因为您的字节数组中可能有无关数据。在最后一个数据 block 中尤其如此。
关于java - BufferedInputStream.read(byte[]) 导致问题。以前有人遇到过这个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610812/