Java为什么循环读取wav文件流,只能读取到第一个?

    response.setHeader("Content-Type", "audio/mpeg");
    byte[] buf = new byte[2048];
    int len_l;
    while (iter.hasNext()) {
        Object[] obj = iter.next();
        if (obj[0] instanceof File) {
            for (int i = 0; i < obj.length; i++) {
                File file = (File) obj[i];

                File fileWav = new File(dir+file.getName());

                FileInputStream fis = new FileInputStream(fileWav);

                OutputStream out = response.getOutputStream();

                len_l = fis.read(buf);

                while (len_l != -1) {

                    out.write(buf, 0, len_l);

                    len_l = fis.read(buf);

               }

                out.flush();
                out.close();
                fis.close();

// System.out.println(file.getName() + " ");
//
// listArr.add(file.getName());

            }
        }
    }

一个response只能输出一个文件。

Java播放音乐的时候必须加载一个播放一个,不可以同时加载完以后一起播放。

这段代码跟播放有啥关系

public class BackgroundMusic implements Runnable{
@Override
public void run() {
AudioClip[] music=new AudioClip[5];
File[] musicList=new File[]{new File("music/1.wav"),new File("music/2.wav"),new File("music/3.wav"),new File("music/4.wav"),new File("music/5.wav")};
for(int i=0;i<5;i++){
try {
music[i]=Applet.newAudioClip(musicList[i].toURI().toURL());
} catch (MalformedURLException ex) {
Logger.getLogger(ChessMenuBar.class.getName()).log(Level.SEVERE,
null,ex);
}
music[i].play();
}
}
}

你都在循环里定义了变量,当然只有一个值,将你要的变量定义在循环外。

一个response只能输出一个文件。请知悉!

http://blog.csdn.net/anxpp/article/details/51512200