无法将完整的音频流写入java中的音频文件
我正在尝试使用java将音频转换为音频流,然后再转换回音频。当我将wav文件读入字节数组时,它显示大约30000字节,但当我将其写入新的fle时,它只写入44字节。请告诉我哪里出错了。代码片段如下所示:无法将完整的音频流写入java中的音频文件,java,Java,我正在尝试使用java将音频转换为音频流,然后再转换回音频。当我将wav文件读入字节数组时,它显示大约30000字节,但当我将其写入新的fle时,它只写入44字节。请告诉我哪里出错了。代码片段如下所示: File src = new File("C:\\test.wav"); AudioInputStream ais = AudioSystem.getAudioInputStream(src); byte[] data = new byte[ais.available
File src = new File("C:\\test.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(src);
byte[] data = new byte[ais.available()];
int x = ais.read(data);
int n = AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("C:\\test2.wav"));
System.out.println("x="+x+" n="+n);
n的输出是44。我认为问题在于您已将AudioInputStream的全部内容读取到字节数组中。这意味着当您将AudioInputStream实例传递给AudioSystem.write()方法时,它将已经位于文件的末尾。(它正在写入的44个字节可能只是标题信息或类似信息。) 快速诊断的方法是注释掉对ais.read(data)的调用,看看它是否开始正确地写出文件 一种可能的解决方案是在将文件读入字节数组后,在AudioInputStream上使用mark()和reset()方法移回文件的开头