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文件,这是一个非常短的哔声,非常小的尺寸。 此外,如果上面的代码中存在一些您可以指出的缺陷,请执行此操作。
如果这是一个完全重复的问题,那么我会道歉,我希望你能提供链接。
答案 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