Napisałem programik konsolowy odtwarzający pliki dźwiękowe
JFileChooser fc = new JFileChooser(".");
FileNameExtensionFilter filter = new FileNameExtensionFilter("WAV & MID", "wav", "mid","wave","midi");
fc.setFileFilter(filter);
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
File file = fc.getSelectedFile();
}
try
{
clip = AudioSystem.getClip();
AudioInputStream inStream = AudioSystem.getAudioInputStream(file);
clip.open(inStream);
clip.start();
}
catch(Exception e)
{
System.out.println(e);
System.exit(0);
}
Timer timer = new Timer(0,new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if(!clip.isRunning())
{
System.exit(0);
}
}
});
timer.setDelay(100);
timer.start();
(Timer jest konieczny by podtrzymać działanie programu.)
Potem go trochę zmodyfikowałem - nazwę pliku można podać jako argument programu
File file = null;
if(args.length > 0)
{
file = new File(args[0]);
}
else
{
JFileChooser fc = new JFileChooser(".");
FileNameExtensionFilter filter = new FileNameExtensionFilter("WAV & MID", "wav", "mid","wave","midi");
fc.setFileFilter(filter);
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
file = fc.getSelectedFile();
}
}
try
{
...//reszta bez zmian
Niestety pliki podawane jako argument wywołania nie były odtwarzane. Pomogło przeniesienie instrukcji
File file = null;
JFileChooser fc = new JFileChooser(".");
if(args.length > 0)
{
file = new File(args[0]);
}
else
{
FileNameExtensionFilter filter = new FileNameExtensionFilter("WAV & MID", "wav", "mid","wave","midi");
fc.setFileFilter(filter);
if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
file = fc.getSelectedFile();
}
}
Czekam na przekonujące wyjaśnienie takiego zachowania.