关于SequenceInputStream
两个流合并时:
package stream.sequence;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.SequenceInputStream;
/**
* SequenceInputStream 表示其他输入流的逻辑串联。
* 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾;
* 接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
*
* @author 半步疯子
*
*/
public class SequenceInputStreamDemo01 {
// SequenceInputStream(InputStream s1, InputStream s2)
public static void main(String[] args) throws IOException {
InputStream s1 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java");
InputStream s2 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java");
SequenceInputStream sis = new SequenceInputStream(s1, s2);
InputStreamReader isr = new InputStreamReader(sis);
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(new FileWriter("CopySequence.java"));
String line = null;
while((line = br.readLine()) != null) {
// while(br.ready()) { /* 为什么合并流之后,不能使用ready方法?结果只有S1 */
// line = br.readLine();
bw.write(line);
bw.newLine();
bw.flush();
}
s1.close();
s2.close();
br.close();
bw.close();
/*
BufferedReader br = new BufferedReader(
new InputStreamReader(
new SequenceInputStream(
new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java"),
new FileInputStream("src/special/RandomAccessFileDemo02.java")
)
)
);
BufferedWriter bw = new BufferedWriter(new FileWriter("CopySequence.java"));
br.close();
bw.close();
*/
}
}
多个流的时候存放到Vector中后进行合并:
package stream.sequence;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Vector;
/**
* SequenceInputStream 表示其他输入流的逻辑串联。
* 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾;
* 接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
*
* @author 半步疯子
*
*/
public class SequenceInputStreamDemo02 {
// SequenceInputStream(Enumeration<? extends InputStream> e)
// 通过枚举类:进行多个流的合并
public static void main(String[] args) throws IOException {
InputStream s1 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java");
InputStream s2 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java");
InputStream s3 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java");
Vector<InputStream> v = new Vector<InputStream>();
v.addElement(s1);
v.addElement(s2);
v.addElement(s3);
SequenceInputStream sis = new SequenceInputStream(v.elements());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copySequence02.java"));
byte[] buf = new byte[1024];
int len = buf.length;
while((len = sis.read(buf, 0, len)) != -1) {
bos.write(buf, 0, len);
}
sis.close();
bos.close();
}
}
关于SequenceInputStream的更多相关文章
- 序列流 SequenceInputStream
SequenceInputStream:序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末 ...
- IO流中SequenceInputStream类
SequenceInputStream类: 不断的读取InputStream流对象,对于使用Enumeration对象的情况,该类将持续读取所有InputStream对象中的内容,直到到达最后一个In ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- SequenceInputStream
SequenceInputStream从名字上看, 他是一个序列字节输入流 既然是个序列 那么意味着 SequenceInputStream装着许多的输入流 所以 可以用他来合并文件 Sequence ...
- [Java基础] SequenceInputStream输入合并流
转载: http://blog.csdn.net/xuefeng1009/article/details/6955707 public SequenceInputStream(Enumeration& ...
- Java之序列流SequenceInputStream
序列流:作用就是将多个读取流合并成一个读取流,实现数据的合并 序列流表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到文件的末尾,接着从第二个输入流读取,以此类推:这样 ...
- Java基础知识强化之IO流笔记64:合并流SequenceInputStream
1. SequenceInputStream合并流的概述: SequenceInputStream类可以将多个输入流串联在一起,合并为一个输入流,因此,该流也被称为合并流. 2. Sequence ...
- Java学习笔记——SequenceInputStream类合并文件的综合举例分析
SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, ...
- (20)IO流之SequenceInputStream 序列流
序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直 ...
- [十五]javaIO之SequenceInputStream
功能简介 SequenceInputStream 合并流 顾名思义,就是可以吧两个流合并起来 他并没有很复杂,单纯的很,仅仅实现了InputStream 他拥有两个构造方法把两个InputS ...
随机推荐
- mpvue开发小程序项目遇到的问题
mpvue项目 最近用mpvue开发了一个家庭私人医生签约的小程序项目.记录总结一下,开发过程中遇到的一些问题. 关于页面进栈出栈的状态值问题 页面进出栈,会触发onLoad/unLoad事件.出栈不 ...
- R在ubuntu16.04上环境搭建
1.R安装 sudo apt-get update sudo apt-get remove vim-common sudo apt-get install vimapt-cache show r-ba ...
- P5110 块速递推-光速幂、斐波那契数列通项
P5110 块速递推 题意 多次询问,求数列 \[a_i=\begin{cases}233a_{i-1}+666a_{i-2} & i>1\\ 0 & i=0\\ 1 & ...
- odoo12里面的RPC【远程过程调用】
odoo的RPC有两种:RPC API:1.xml-rpc 2.json-rpc 案例 x ...
- Deepin 20.2.2 /UOS 20.2 添加ppa源
由于 工作需要,需要通过PPA安装一些优质的软件包,但是 Deepin 默认不支持PPA源 解决方法 由于Deepin/Uos系统默认是没有安装PPA的那么我们得先安装PPA来支持"add- ...
- 第五篇--Chorme浏览器主页被篡改
解决方法:关闭谷歌浏览器,右击桌面快捷方式,查看属性,然后将target后面的网址删掉.并且任务栏的google打开方式,最好也把流氓网址删掉.之后就正常了.
- Python -- 长字符串
如果需要写一个非常非常长的字符串,它需要跨多行,那么,可以使用三个引号代替普通引号. print '''This is a very long string. It continues here. A ...
- Pb代理工具之mitmproxy
mitmproxy 一 . mitmproxy介绍 mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack). 不同于 fid ...
- sqli-labs靶机
第一关 1' 第二关 1 第三关 1') 第四关 1'') 第五关 1' + extractvalue报错注入 第六关 1 " + ...
- Typora PicGo Gitee博客写作好搭档
利用Gitee仓库存放图片 1.首先在Gitee上创建一个公开的仓库,我这里创建了一个名叫resources的仓库: 2.在Gitee中获取私人令牌(个人设置界面中): 安装配置PicGo 1.下载自 ...