2014-02-04 6 views
0
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

Это просто правильный способ закрыть дескрипторы файлов, если они больше не нужны. – icbytes

+0

Возможный дубликат [Закрытие потоков в Java] (http://stackoverflow.com/questions/515975/closing-streams-in-java) – RossC

ответ

0

Вам необходимо закрыть клип, чтобы освободить любые используемые им ресурсы. Если вы этого не сделаете, вы будете утечка памяти и, в конечном итоге, сбой OutOfMemoryException.

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. 
0

Да это дубликат, смотрите здесь: Closing Streams in Java

Главным образом: Вы можете запустить из ресурсов, как файл-указатели, память и т.д.

При исследовании I выяснили, что Java 7 представила какой-то синтаксический сахар, чтобы сделать это «проще»: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html

Смежные вопросы