首页 > 代码库 > java 21 - 13 IO流之 合并流
java 21 - 13 IO流之 合并流
SequenceInputStream
:表示其他输入流的逻辑串联。
构造方法摘要 | |
---|---|
SequenceInputStream(Enumeration<? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream ,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 | |
SequenceInputStream(InputStream s1, InputStream s2) 通过记住这两个参数来初始化新创建的 SequenceInputStream (将按顺序读取这两个参数,先读取 s1 ,然后读取 s2 ),以提供从此 SequenceInputStream 读取的字节。 |
首先演示第二个构造方法:
SequenceInputStream(InputStream s1, InputStream s2)
需求:把2个文件的内容复制到另1个文件中
以前的操作:
a.txt -- b.txt
c.txt -- d.txt
现在想要:
a.txt+b.txt -- c.txt
1 public static void main(String[] args) throws IOException { 2 // 把DataStreamDemo.java和user.txt合并成Copy.txt 3 4 //首先封装2个文件,由于SequenceInputStream(InputStream s1, InputStream s2)需要的参数列表是InputStream类的 5 //FileInputStrem是InputStream的子类,使用多态: 6 InputStream in1 = new FileInputStream("DataStreamDemo.java"); 7 InputStream in2 = new FileInputStream("user.txt"); 8 //把这两个文件放进SequenceInputStream中 9 SequenceInputStream in = new SequenceInputStream(in1, in2);10 11 //封装目的地12 BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("Copy.txt"));13 //读取in1和in2的数据,并写入in中14 byte[] by = new byte[1024];15 int len = 0;16 while((len = in.read(by)) != -1){17 bw.write(by,0,len);18 } 19 in1.close();20 in2.close();21 bw.close();22 in.close();23 24 }
3、演示第一种构造方法:
SequenceInputStream(Enumeration e)
通过简单的回顾我们知道了Enumeration是Vector中的一个方法的返回值类型。
Enumeration<E> elements()
需求:把3个文件的数据复制到另一个文件中
以前的操作:
a.txt -- b.txt
c.txt -- d.txt
e.txt -- f.txt
现在想要:
a.txt+b.txt+c.txt -- d.txt
1 public static void main(String[] args) throws IOException { 2 //SequenceInputStream(Enumeration e)需要的是Enumeration 3 //而Enumeration是Vector中的一个方法的返回值类型。Enumeration<E> elements() 4 //所以就要实现这个方法。 5 6 //首先定义一个Vector对象 7 Vector<InputStream> v = new Vector<InputStream>(); 8 InputStream i1 = new FileInputStream("pw.txt"); 9 InputStream i2 = new FileInputStream("user.txt");10 InputStream i3 = new FileInputStream("DataStreamDemo.java");11 12 //把这三个文件添加到Vector13 v.add(i1);14 v.add(i2);15 v.add(i3);16 //实现Vector的这个方法,得到Enumeration17 Enumeration<InputStream> e = v.elements();18 //得到以后就可以使用下面这个方法,这样的话,3个文件中的数据就存储在si中了19 SequenceInputStream si = new SequenceInputStream(e);20 21 //建立输入流22 BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("Copy.txt"));23 24 //读取Vertor的数据,再添加到Copy.txt中25 byte[] by = new byte[1024];26 int len = 0;27 while((len = si.read(by)) != -1){28 bo.write(by,0,len);29 }30 si.close();31 bo.close();32 }
java 21 - 13 IO流之 合并流
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。