我看书上的代码是:
File file=new File("audio/11042811176905164effc28351.wav");
URI uri=file.toURI();
URL url=uri.toURL();
AudioClip clip=Applet.newAudioClip(url);
clip.play();
但是我写的在运行的时候就是没声音,
声音文件的路径也应该没有问题,我尝试着删除该音频文件
就会说该文件正被java程序使用无法删除 那到底是什么原因没声音呢? 求各位大哥指点一下小弟

解决方案 »

  1.   

    package com.lolo;import java.io.File;
    import java.io.IOException;import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.UnsupportedAudioFileException;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.DataLine;public class PlayMusic {
       
    //    程序退出时执行的代码
        public void doShutDownWork() {
            Runtime.getRuntime().addShutdownHook(new Thread() {
                public void run() {
                    try {
                        //Toolkit.getDefaultToolkit().beep();
                        Play();
                        Play();
                    } catch (Exception ex) {
                    }
                }
            });
        }
       
        //播放音频文件
        public void Play(){
            String fileurl = "file/tada.wav";
            try{
                AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
                AudioFormat aif = ais.getFormat();
                SourceDataLine sdl = null;
                DataLine.Info info = new DataLine.Info(SourceDataLine.class,aif);
                sdl = (SourceDataLine)AudioSystem.getLine(info);
                sdl.open(aif);
                sdl.start();
               
                //play
                int nByte = 0;
                byte[] buffer = new byte[128];
                while(nByte != -1){
                    nByte = ais.read(buffer,0,128);
                    if(nByte >= 0){
                        int oByte = sdl.write(buffer, 0, nByte);
                        //System.out.println(oByte);
                    }
                }
                sdl.stop();
            }catch(UnsupportedAudioFileException e){
                e.printStackTrace();
            } catch (IOException e) {
                // TODO 自动产生 catch 区块
                e.printStackTrace();
            } catch (LineUnavailableException e) {
                // TODO 自动产生 catch 区块
                e.printStackTrace();
            }
        }
    }
      

  2.   

    多谢 一楼大哥 慷慨赐码  
    不过为什么 有些音频文件支持不了呢?
    我用mid MP3 wma都会抛出
    javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file异常
    在用wav文件的时候也抛出过一次,最后下了个手机铃声的 wav文件 才顺利运行
    这是为什么呢?如果只是一部分能够播放 总有点那么显得 美中不足
    那么应该如何去解决呢?