A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马李刚 黑马帝   /  2011-9-6 23:27  /  1905 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code=java]    import java.util.*;
    import java.io.*;
        class L
    {
         public static void main(String args[]) throws IOException
         {
                 //向ArrayList加入三个流对象
                 ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
                 for(int x=0;x<20;x++)
                 {
                         al.add(new FileInputStream(""+x+".part"));
                 }


                 //做一个枚举,并传入SequenceInputStream的构造函数中
                 Iterator<FileInputStream> it=al.iterator();
                 Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
                 {
                         pubic boolean hashMoreElements()
                         {
                                 return it.hasNext();
                         }
                         public FileInputStream nexElement()
                         {
                                 return it.next();
                         }
                 };
                 SequenceInputStream sis=new SequenceInputStream(en);
                 //以上是是第一部分,目的是将三个流合并成一个流



                 FileOutputStream fos=new FileOutputStream("er.avi");
                 byte[] buf=new byte[1024*1024];
                 int ch=0;
                 while((ch=sis.read(buf))!=-1)
                 {
                         fos.write(buf,0,ch);
                 }


                 fos.close();
                 sis.close();
         }
        }[/code]代码大意:将三个文件(1.part; 2.part; 3.part)合并成一个文件(er.avi)。
[ 本帖最后由 黑马李刚 于 2011-09-06  23:29 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-9-6 23:41:49
沙发

回复 楼主 的帖子

pubic boolean hashMoreElements(){
         return it.hasNext();
}

public FileInputStream nexElement(){
         return it.next();
}
这两个方法都写错了。应该是下面这两个,要注意啊。写错了,不是实现接口,会报错。
               @Override
                public boolean hasMoreElements() {
                        return false;
                }
                @Override
                public FileInputStream nextElement() {
                        return null;
                }
回复 使用道具 举报
黑马网友  发表于 2011-9-7 00:43:53
藤椅
hasMoreElements
boolean hasMoreElements()
测试此枚举是否包含更多的元素。
当且仅当此枚举对象至少还包含一个可提供的元素时,才返回 true;否则返回 false。
nextElement
E nextElement()如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
如果没有更多的元素存在,抛出NoSuchElementException。
回复 使用道具 举报
黑马网友  发表于 2011-9-8 10:21:05
板凳
我只是把它放到eclipse里面,三个单词拼写错
public boolean hasMoreElements()
                         {
                                 return it.hasNext();
                         }
                         public FileInputStream nextElement()
另外it要想在内部内使用,需要被定义成final
final Iterator<FileInputStream> it=al.iterator();
没有细看,有没有其他问题不清楚
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马