我正在尝试将 .wav 文件读入字节数组,以通过套接字连接发送并在另一端播放。一旦读取文件的头数据,我就会遇到一个问题,文件的其余部分只是用 0 填充字节数组。这是示例代码。我尝试了其他几种方法,但都产生相同的结果。
File audioIn = new File("assets/file.wav");
byte [] byteArray = new byte[filesize];
FileInputStream fileInStream = new FileInputStream(audioIn);
fileInStream.read(byteArray);
这是从各个字节获取的调试数据。 header 信息与 Java 方法之前提取的信息相对应。根据我所读到的内容,声音数据应该从字节[44]开始,但是我得到了下面的结果。数组的其余部分用 0 填充。
Byte 0: 82
Byte 1: 73
Byte 2: 70
Byte 3: 70
...
Byte 41: 97
Byte 42: 0
Byte 43: -68
Byte 44: -1
Byte 45: 1
Byte 46: 0
Byte 47: 0
...
还应该注意的是,这里头数据将被丢弃,因为 WAVE 信息将被预先发送过来。预先感谢您的帮助。
最佳答案
FileInputStream.read
不会用数据填充字节数组;它只读取一次可以读取的内容。您必须循环调用它才能读取所有内容。
您也可以使用DataInputStream.readFully
方法。如果您使用的是 Java 7,您可以使用 Files.readAllBytes
.
关于java - 在Java中将.wav文件读取到字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779611/