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