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

时间:2014-02-04 10:27:35

标签: java

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);
        }
    }

我看过一个类似这样的问题,但我想我会更具体一点。

所以上面的代码是我放在一个单独的类中的方法,当用户点击按钮时调用该方法。它似乎没有.close()工作正常但是我仍然非常确定我必须使用close()的一些很好的理由,即使我正在播放的文件非常小?

播放的声音只是一个.wav文件,这是一个非常短的哔声,非常小的尺寸。 此外,如果上面的代码中存在一些您可以指出的缺陷,请执行此操作。

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

From Sun's documentation for Line

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.

答案 2 :(得分:0)

是的,这是重复的,请看这里:Closing Streams in Java

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

在研究我发现时,Java 7引入了一些语法糖来使这“更容易”: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html