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可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...
随机推荐
- windbg定位死锁
操作系统对死锁的描述如下: 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 那么为什么会产生死锁呢? 1.因为系统资源不足. ...
- JavaScript String(字符串)对象 实例
返回字符串的长度: <html> <body> <script type="text/javascript"> var txt="He ...
- JavaScript的一些小技巧(转)
本文是一篇翻译文章,原文信息如下: 原文:45 Useful JavaScript Tips, Tricks and Best Practices 作者:Saad Mousliki JavaScrip ...
- 使用sublime text 2 版本至今我所遇到的问题及解决方法
1.汉化:下载汉化包 .打开程序Preference下的浏览包文件夹.将解压的程序包粘贴进包文件夹2.破解:标题栏上面有带(unregistered)表示还没有注册: 打开HELP→Enter lic ...
- REUSE_ALV_GRID_DISPLAY显示ALV,设置可编辑时,与内表数据同步问题
使用function module: REUSE_ALV_GRID_DISPLAY显示ALV,并设置alv某些列可编辑,可是编辑后发现对应的内表数据并没有随之改变.记得需要设置一个参数的值,怎么想也记 ...
- OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)
// 先分别初始化数组.字典和集合,然后分别用for循环.NSEnumerator枚举器和forin循环这三个方法来实现遍历 NSArray *array = @[@"yinhao" ...
- Objective-C的IO流
- linux64位操作系统装32位jdk解决方法
/opt/tomcat/tomcat7.0/bin/catalina.sh: /usr/local/java/jdk1.7.0_79/bin/java: /lib/ld-linux.so.2: bad ...
- SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝
这次使用这个DMAC的Multi-buffer传输功能,将两个缓冲区的内容拷贝至一个连续的缓冲区中. 一. DMAC 在M4中,DMA控制器(DMAC)比外设DMA控制器(PDC)要复杂,但是功能更加 ...
- Handler与Looper,MessageQueue的关系
总结一下Handler与Looper,MessageQueue的关系,并实现自定义与子线程相关的Handler. 一.Handler与Looper,MessageQueue的关系 它们之间的关系其实就 ...