Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 为什么需要关闭音频剪辑?_Java - Fatal编程技术网

Java 为什么需要关闭音频剪辑?

Java 为什么需要关闭音频剪辑?,java,Java,我见过一个类似于这个的问题,但我想我会更具体一点 因此,上面的代码是我放在一个单独类中的一个方法,当用户单击按钮时将被调用。没有.close()似乎可以正常工作,但我仍然非常确定,即使我正在播放的文件非常小,也应该有一些非常好的理由来使用close() 播放的声音只是一个.wav文件,它是一个非常短的嘟嘟声,大小非常小。 此外,如果上面的代码中有一些您可以指出的缺陷,请这样做 如果这是一个完全重复的问题,我会道歉,我希望你能提供它的链接。你需要关闭剪辑以释放它使用的任何资源。如果不这样做,您将泄

我见过一个类似于这个的问题,但我想我会更具体一点

因此,上面的代码是我放在一个单独类中的一个方法,当用户单击按钮时将被调用。没有.close()似乎可以正常工作,但我仍然非常确定,即使我正在播放的文件非常小,也应该有一些非常好的理由来使用close()

播放的声音只是一个.wav文件,它是一个非常短的嘟嘟声,大小非常小。 此外,如果上面的代码中有一些您可以指出的缺陷,请这样做


如果这是一个完全重复的问题,我会道歉,我希望你能提供它的链接。

你需要关闭剪辑以释放它使用的任何资源。如果不这样做,您将泄漏内存并最终导致OutOfMemoryException崩溃。

:


是的,这是一个副本,请参见此处:

主要是:您可能会耗尽资源,如文件指针、内存等

在研究过程中,我发现Java 7引入了一些语法糖,使之“更容易”:

如果不再需要文件句柄,这是关闭文件句柄的正确方法。文件句柄可能重复
public void playClick(String file) 
    {
        try {
        Clip clip = AudioSystem.getClip ();
        AudioInputStream ais = AudioSystem.getAudioInputStream (new File(file));


        clip.open (ais);
        clip.start ();


        }
        catch (Exception e)
        {
            System.out.println(e);
        }
    }
Closes the line, indicating that any system resources in use 
by the line can be released. If this operation succeeds, 
the line is marked closed and a CLOSE event is dispatched 
to the line's listeners.