2015-02-17 5 views
1

В моем коде я загружаю звук и закрываю или не закрываю AudioInputStream, звук воспроизводится. Лучше всего закрыть или это проблема?Я могу закрыть AudioInputStream после загрузки объекта Clip?

 try { 
     as = AudioSystem.getAudioInputStream(new File("som/trippygaia1.mid")); 
     clip = AudioSystem.getClip(); 
     clip.open(as); 

     as.close(); // ? 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    if (clip != null) { 
     clip.start(); 
    } 

ответ

0

Согласно документации Clip разомкнут:

Говорит:

Открывает клип, а это означает, что он должен приобрести любые необходимые системные ресурсы и начнет функционировать ... Обратите внимание, что некоторые линии , после закрытия, не может быть вновь открыт. Попытки открыть такую ​​линию всегда будут приводить к LineUnavailableException.

Clip - это линия, поэтому ее ссылка на объект клипа, а не объект потока.

Это, скорее всего, плохая практика закрыть поток, который вы только что открыли в клипе. Для того, чтобы правильно закрыть поток, убедитесь, что вызывается закрытым способом клипа, в котором говорится:

Закрывает линию, о том, что любые системные ресурсы использования линии могут быть освобождены..

+0

Для любого клипа, который я открыл, мне нужен новый AudioInputStream? –

+1

Я не вижу ничего в документации, относящейся к этому, извините. – Noah

0

Я не помню, если сам AudioInputStream нужно быть закрыты, когда вы закончите загрузку аудиоданных клипа. Я думаю, что AudioInputStream помещает какую-то блокировку в файл ресурсов, который вы, возможно, захотите выпускать. В примерах, которые я видел при использовании Java Clip, не содержится команда для закрытия AudioInputStream. Но это не должно повредить, чтобы закрыть его, как только Clip был построен, afaik.

Я с нетерпением жду коррекции, если это окажется дезинформированным.

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

  • Нет связанных вопросов^_^