0
何時應關閉作爲參數傳遞給MIDI定序器的InputStream
? 當調用Sequencer.close()
時它會自動關閉嗎,還是應該在輸入流被讀入音序器後關閉輸入流?關閉MIDI的InputStream
public MidiSound(InputStream in) throws MidiUnavailableException,
IOException, InvalidMidiDataException {
sequencer = MidiSystem.getSequencer();
synth = MidiSystem.getSynthesizer();
receiver = MidiSystem.getReceiver();
sequencer.open();
synth.open();
sequencer.getTransmitter().setReceiver(receiver);
sequencer.setSequence(in);
//in.close()?
}
這是否也適用於MIDI? Java似乎有不同的MIDI文件庫 – jedyobidan 2013-05-09 22:33:43
好的,我只是在API規範中查找了MidiDeviceReceiver。它擴展了Receiver,繼而擴展了AutoCloseable。我的猜測是AutoCloseable的存在表明有資源可以並且應該關閉。否則,它爲什麼會在那裏? MidiDevice API中還有一些關於關閉的文本; http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/MidiDevice.html希望有所幫助。 – 2013-05-10 03:05:25
事實上,AutoCloseable的api指出:「不再需要時必須關閉的資源。」 http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html – 2013-05-10 03:09:08