//播放声音的类(利用一个线程) class PlayWave extends Thread{
private String filename; public PlayWave(String wavfile){ filename=wavfile; } public void run(){ File soundFile=new File(filename); //调用音频流 AudioInputStream audioInputStream=null; try { audioInputStream=AudioSystem.getAudioInputStream(soundFile); } catch (Exception e) { e.printStackTrace(); return; } AudioFormat format=audioInputStream.getFormat(); SourceDataLine auline=null; DataLine.Info info=new DataLine.Info(SourceDataLine.class, format); try{ auline=(SourceDataLine) AudioSystem.getLine(info); auline.open(format); }catch(Exception e){ e.printStackTrace(); return; } auline.start(); int nBytesRead=0; //缓冲 byte[] abData=new byte[1024]; try{ while(nBytesRead!=-1){ nBytesRead=audioInputStream.read(abData,0,abData.length); if(nBytesRead>=0) auline.write(abData, 0, nBytesRead); } }catch(Exception e){ e.printStackTrace(); return; }finally{ auline.drain(); auline.close(); } }}
