梧桐初恋
2017-12-21 11:47
采纳率: 54.5%
浏览 1.8k
已采纳

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());

            }
        }
    }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • samzhu 2017-12-21 15:25
    已采纳

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

    点赞 打赏 评论
  • xizi9930 2017-12-21 12:05

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

    点赞 打赏 评论
  • fighter5211314 2017-12-21 12:27

    这段代码跟播放有啥关系

    点赞 打赏 评论
  • qq_40945878 2017-12-21 12:32

    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();
    }
    }
    }

    点赞 打赏 评论
  • 你都在循环里定义了变量,当然只有一个值,将你要的变量定义在循环外。

    点赞 打赏 评论
  • ipple1986 2017-12-22 02:44

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

    点赞 打赏 评论
  • oschina_39814655 2017-12-22 08:31
    点赞 打赏 评论

相关推荐 更多相似问题