Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';不要复制音频文件_Java_File_Audio_Copy - Fatal编程技术网

Java Can';不要复制音频文件

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()关闭了所有文件 您可以在侦听器中关闭音频

好的,我发现这个使用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();
        }
    }