Java Can';不要复制音频文件
好的,我发现这个使用Files.toCopy的方法有一个错误,它说这个文件已经被使用了 复制(tempClip.toPath()、wavFile.toPath()、StandardCopyOption.REPLACE_EXISTING) 这是打开文件的方法。当我不使用此方法时,它可以复制。当我使用此方法时,它会给出错误。下面的current.track引用上面的wav文件。我以为我用audioStream.close()和audioClip.close()关闭了所有文件Java Can';不要复制音频文件,java,file,audio,copy,Java,File,Audio,Copy,好的,我发现这个使用Files.toCopy的方法有一个错误,它说这个文件已经被使用了 复制(tempClip.toPath()、wavFile.toPath()、StandardCopyOption.REPLACE_EXISTING) 这是打开文件的方法。当我不使用此方法时,它可以复制。当我使用此方法时,它会给出错误。下面的current.track引用上面的wav文件。我以为我用audioStream.close()和audioClip.close()关闭了所有文件 您可以在侦听器中关闭音频
您可以在侦听器中关闭音频剪辑,以便在获得LineEvent.Type.STOP之前不会实际调用它。更不用说我有隐私泄露了。修好了
if ( e.getSource() instanceof QuoteButton) {
QuoteButton current = (QuoteButton)e.getSource();
try {
audioStream = AudioSystem.getAudioInputStream(current.track);
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
audioClip = (Clip) AudioSystem.getLine(info);
audioClip.open(audioStream);
audioClip.start();
audioClip.addLineListener(new LineListener() {
@Override
public void update(LineEvent event) {
if(event.getType() == LineEvent.Type.STOP){
audioClip.close();
}
}
});
audioStream.close();
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException e1) {
e1.printStackTrace();
}
}