繁体   English   中英

用Java将.wav文件读取到字节数组

[英]Reading .wav file to a byte array in Java

我正在尝试将.wav文件读取为字节数组,以通过套接字连接发送并在另一端播放。 读取文件的头数据后,我遇到了一个问题,文件的其余部分仅用0填充了字节数组。这是示例代码。 我尝试了几种其他方法,但是都可以得到相同的结果。

File audioIn = new File("assets/file.wav");
byte [] byteArray = new byte[filesize];
FileInputStream fileInStream = new FileInputStream(audioIn);
fileInStream.read(byteArray);

这是从单个字节中获取的调试数据。 标头信息与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

您还可以签出Apache / Commons IO库,那里有一些方便的资料可用于处理常见的I / O任务,例如将整个文件读入字节数组或关闭输入/输出样板资料。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM