Java 为什么这个方法不起作用?

Java 为什么这个方法不起作用?,java,audio,audio-streaming,Java,Audio,Audio Streaming,它应该附加音频文件,但它总是返回最后一个文件,而不是两个文件!。。。有什么问题吗S我能看到的唯一方法是仅返回第二个音频输入流,即如果第一个音频输入流中的读取有问题。 我建议把你的方法分解一些。在这里,我扩展了一些方法,以便添加一些日志语句,使其更加详细。我没有改变任何功能 public AudioInputStream append(AudioInputStream main, AudioInputStream s) throws UnsupportedAudioFileException, I

它应该附加音频文件,但它总是返回最后一个文件,而不是两个文件!。。。有什么问题吗S

我能看到的唯一方法是仅返回第二个音频输入流,即如果第一个音频输入流中的读取有问题。 我建议把你的方法分解一些。在这里,我扩展了一些方法,以便添加一些日志语句,使其更加详细。我没有改变任何功能

public AudioInputStream append(AudioInputStream main, AudioInputStream s) throws UnsupportedAudioFileException, IOException {
    AudioSystem.write(new AudioInputStream(
             new SequenceInputStream(main, s),     
             main.getFormat(), 
             main.getFrameLength() + s.getFrameLength()), AudioFileFormat.Type.WAVE, new File("/home/nikkka/Desktop/alphabet/result_for_watch.wav"));
    return AudioSystem.getAudioInputStream(new File("/home/nikkka/Desktop/alphabet/result_for_watch.wav"));
}
此外,确保捕获并记录错误,以防抛出错误。在我的测试用例中,一切正常。检查添加的日志语句,该语句显示文件前后的大小,同时确保写入的内容>=该值


使方法更详细将有助于找到问题所在。有了它,像这样更详细的内容将允许您更轻松地逐步使用调试器。一旦找到问题的根源,如果愿意,您可以恢复到更紧凑的方式。

您所说的“它返回最后一个文件”是什么意思?什么不起作用?有错误吗?您能告诉我输出中显示了什么吗?从上面的代码中,我添加了记录器语句。你从中看到了什么?你应该看到这样的东西:20191+13921=34112写下:136492
public AudioInputStream append(AudioInputStream main, AudioInputStream s)
            throws UnsupportedAudioFileException, IOException {

        SequenceInputStream sis = new SequenceInputStream(main, s);

        long length = main.getFrameLength() + s.getFrameLength();
        logger.debug(main.getFrameLength() + "+" + s.getFrameLength() + 
                    "=" + length);

        AudioFormat fmt = main.getFormat();

        File file = new File("c:/MyNew.wav"); //changed for testing

        AudioInputStream ais = new AudioInputStream(sis, fmt, length);
        int size = AudioSystem.write( ais, AudioFileFormat.Type.WAVE, file);
        logger.debug("Wrote :" + size);

        return AudioSystem.getAudioInputStream(file);
    }