java - BufferedInputStream.read(byte[]) 导致问题。以前有人遇到过这个问题吗?

标签 java file-io audio

我编写了一个 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/

相关文章:

java - 安卓音频输入流

java - 尝试在空指针对象上调用异常

java - 以全屏模式启动 MPlayer

c++ - 如何从文本文件中读取文件名列表并在 C++ 中打开它们?

c - C中文件获取内容

c++ - libswresample : swr_convert() not producing enough samples

java - Apache Camel 中的开关盒

java - 关闭一个 View 类并打开另一个 View 类

java - 如何序列化和反序列化 arrayList 对象?

c++ - 合并 2 个 wav 文件后生成的波形的采样率