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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gx_lv 中级黑马   /  2015-1-14 11:27  /  1248 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

public class SequenceInputStream {
        public static void main(String[] args) throws Exception {
                Vector<FileInputStream> v = new Vector<FileInputStream>();               
                v.add(new FileInputStream("123.txt"));
                v.add(new FileInputStream("javalist.txt"));
                               
                Enumeration<FileInputStream> en = v.elements();
                               
                SequenceInputStream sis = new SequenceInputStream(en);
                               
                FileOutputStream fos = new FileOutputStream("sssssss.txt");
                                       
                byte[] buf = new byte[1024];                               
                int len=0;
                while((len=sis.read(buf))!=-1)
                {
                        fos.write(buf, 0, len);
                }       
                               
                sis.clone();
                fos.close();
                }
}


这个错误怎么解决?谢谢各位了

8 个回复

倒序浏览
合并流导包没
回复 使用道具 举报

包已经加上了  写在最上面了
回复 使用道具 举报
  1. public SequenceInputStream(Enumeration<FileInputStream> en){}
复制代码


需要添加一个构造函数,因为你实例化这个对象时后面的参数要与构造函数的一致,例如你可以创建一个SequenceInputStream sis = new SequenceInputStream();
回复 使用道具 举报
gx_lv 发表于 2015-1-14 11:54
包已经加上了  写在最上面了

怎么没看到你导的包有合并流呀,你写IO.*全导看看
回复 使用道具 举报
gx_lv 发表于 2015-1-14 11:54
包已经加上了  写在最上面了

import java.io.SequenceInputStream;
回复 使用道具 举报
你打错字了。sis后面应该是close不真clone 一个是关闭一个是克隆,还有你那个程序就是没打错字也不可能成功,你自己的类型和人家自定义的类名一样,你现在的行为有一个名词叫做覆写java已有的类。
你琢磨人家会让你干吗。人家本来的那个类是SUN 的程序员若干年前写好的,里边的构造函数和方法很多很复杂你覆写完了你琢磨能达到人家给的功能吗。你的功能达不到,构造函数也不和人家的不一样,你现在的行为是调用自己的方法算作递归。比如你编写了一个类A,然后类A里再调用类A。
解决你的问题有两个思路,一个是你把你的整个类编写的和人家java 程序员写的一样好,二 你把你的类名该做别的
你看我给你改的代码写就行了
  1. package 合并流SequenceInputStream;

  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.InputStream;
  5. import java.io.SequenceInputStream;
  6. import java.util.ArrayList;
  7. import java.util.Enumeration;
  8. import java.util.Iterator;
  9. import java.util.Vector;
  10. /*
  11. * 需要添加一个构造函数,因为你实例化这个对象时后面的参数要与构造函数的一致,
  12. * 例如你可以创建一个SequenceInputStream sis = new SequenceInputStream();
  13. */
  14. public class 合并流错题改正 {
  15.         public static void main(String[] args) throws Exception {
  16.                 Vector<FileInputStream> v = new Vector<FileInputStream>();               
  17.                 v.add(new FileInputStream("cc.java"));
  18.                 v.add(new FileInputStream("cccc.txt"));
  19.                 Enumeration<FileInputStream> en = v.elements();
  20.                               
  21.                 SequenceInputStream sis = new SequenceInputStream(en);
  22.                               
  23.                 FileOutputStream fos = new FileOutputStream("sssssss.txt");
  24.                                        
  25.                 byte[] buf = new byte[1024];                              
  26.                 int len=0;
  27.                 while((len=sis.read(buf))!=-1)
  28.                 {
  29.                         fos.write(buf, 0, len);
  30.                 }      
  31.                               
  32.                 sis.close();
  33.                 fos.close();
  34.                 }
  35. }
复制代码
回复 使用道具 举报
gx_lv 中级黑马 2015-1-14 12:59:17
8#
abc784990536 发表于 2015-1-14 12:06
import java.io.SequenceInputStream;

哦,你说的是这个包呀,我这压根就加不上,报错,下面都是红线,怎么回事。反复和毕老师的代码对了,没差别呀
回复 使用道具 举报
gx_lv 中级黑马 2015-1-14 13:02:21
9#
abc784990536 发表于 2015-1-14 12:06
import java.io.SequenceInputStream;

IO全导试过了,没变化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马