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
public static void main(String[] args) throws IOException {
// 把DataStreamDemo.java和user.txt合并成Copy.txt
//首先封装2个文件,由于SequenceInputStream(InputStream s1, InputStream s2)需要的参数列表是InputStream类的
//FileInputStrem是InputStream的子类,使用多态:
InputStream in1 = new FileInputStream("DataStreamDemo.java");
InputStream in2 = new FileInputStream("user.txt");
//把这两个文件放进SequenceInputStream中
SequenceInputStream in = new SequenceInputStream(in1, in2);
//封装目的地
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("Copy.txt"));
//读取in1和in2的数据,并写入in中
byte[] by = new byte[1024];
int len = 0;
while((len = in.read(by)) != -1){
bw.write(by,0,len);
}
in1.close();
in2.close();
bw.close();
in.close();
}
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
public static void main(String[] args) throws IOException {
//SequenceInputStream(Enumeration e)需要的是Enumeration
//而Enumeration是Vector中的一个方法的返回值类型。Enumeration<E> elements()
//所以就要实现这个方法。
//首先定义一个Vector对象
Vector<InputStream> v = new Vector<InputStream>();
InputStream i1 = new FileInputStream("pw.txt");
InputStream i2 = new FileInputStream("user.txt");
InputStream i3 = new FileInputStream("DataStreamDemo.java");
//把这三个文件添加到Vector
v.add(i1);
v.add(i2);
v.add(i3);
//实现Vector的这个方法,得到Enumeration
Enumeration<InputStream> e = v.elements();
//得到以后就可以使用下面这个方法,这样的话,3个文件中的数据就存储在si中了
SequenceInputStream si = new SequenceInputStream(e);
//建立输入流
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("Copy.txt"));
//读取Vertor的数据,再添加到Copy.txt中
byte[] by = new byte[1024];
int len = 0;
while((len = si.read(by)) != -1){
bo.write(by,0,len);
}
si.close();
bo.close();
}
java 21 - 13 IO流之 合并流的更多相关文章
- java 21 - 13 IO流之序列化和反序列化
序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输.对象 -- 流数据(ObjectOutputStream) 构造方法:ObjectInputStream(InputStream in) ...
- java 21 - 12 IO流的打印流
打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...
- java 21 - 11 IO流的标准输入流和标准输出流
标准输入输出流 System类中的两个成员变量: public static final InputStream in "标准"输入流. public static final P ...
- java 21 - 1 IO流中的字符流概述
字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流. 字符流: 字符流=字节流+编码表. 编码表: 由字符及其对应的数值组成的一张表 编码表介绍: ...
- java 21 - 7 IO流小结的图解
- 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- Java中的IO流(四)
上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...
- 第55节:Java当中的IO流-时间api(下)-上
Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...
- 第53节:Java当中的IO流(上)
Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...
随机推荐
- jquery操作radio单选按钮、checked复选框。
一.radio 取值: $('input[name=radio]:checked').val(); 二.checked 判断checked是否被选中 $("input[type='check ...
- ASP.NET控件绑定数据源
DataList/GridView/Repeater DataSet表示数据集,其中包含表,约束和表之间的关系.与现有数据源的交互通过DataAdapter来控制. 源代码示例: SqlDataAda ...
- Atitit.视频文件加密的方法大的总结 java c# php
Atitit.视频文件加密的方法大的总结 java c# php 1. 加密的算法 aes 3des des xor等.1 2. 性能1 3. 解密1 4. 播放器的事件扩展1 5. 自定义格式 ...
- SharePoint 2010 External List Paging – Server Side
http://lightningtools.com/bcs/sharepoint-2010-external-list-paging-server-side/ When you are using a ...
- 响应式SharePoint模版页
一张好的皮肤显然的会给你的项目加分不少.特别是大部分的项目,UI甚至可以决定成败. SharePoint在这方面一直都做得不好,曾经我有好多项目都是坐在美工旁边来一起修改样式.痛苦的经历. 不久以前, ...
- 【读书笔记】iOS-查看一个软件ipa包的内容
一,打开itunes----->我的iPhone应用程序. 二,右键点击app---->在Finder中显示---->出现下图所示界面. 三,将上图中的ipa包拷贝到桌面,如下图所示 ...
- Windows7下Blend for Visual Studio 2012使用问题
目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7 ...
- 最近开始研究PMD(一款采用BSD协议发布的Java程序代码检查工具)
PMD是一款采用BSD协议发布的Java程序代码检查工具.该工具可以做到检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等.该软件功能强大,扫描效率高,是Java程序员 ...
- Spring-framework下载
下载版本,修改版本号就行. http://repo.springsource.org/libs-release-local/org/springframework/spring/4.3.2.RELEA ...
- ASP.NET导出bdf文件
1.导出助手类 using System;using System.IO;using System.Data;using System.Data.OleDb;using System.Web;usin ...