黑马程序员_IO流_合并流SequenceInputStream及打印输出流PrintStream PrintWriter

-------android培训java培训、期待与您交流! ----------


PrintStream和PrintWriter的构造函数可以接收类型:

File对象
String字符串路径
OutputStream字节输出流

PrintWriter还可以接收Writer类型,构造函数接收的是输出流或者路径 文件,使用print(str)方法,可以将数据打印


自动刷新功能 :
public PrintWriter(OutputStream out, boolean autoFlush)
out - 输出流, autoFlush - boolean 变量;如果为 true,则 println、printf format 方法将刷新输出缓冲区
但是即使为true,print()使用刷新无效

SequenceInputStream 合并流只有这一种字节流,不存在字符流形式

表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

SequenceInputStream构造方法:
SequenceInputStream(Enumeration e)
接收枚举,只能将InputStream流存储于Vector集合中,然后通过Vector的elements()方法获得枚举
SequenceInputStream(InputStream s1, InputStream s2)

/*
多个输入流合并 及 PrintWriter使用
Strawberry2013-5-4

*/
import java.io.*;
import java.util.*;

class PrintStreamDemo
{
	public static void main(String[] args) throws Exception
	{
		Vector v = new Vector();
		v.add(new FileInputStream("1.txt"));
		v.add(new FileInputStream("2.txt"));
		v.add(new FileInputStream("3.txt"));
										//Enumeration v.elements(), 返回的Enumeration FileInputStream枚举
		BufferedReader buf = new BufferedReader(new InputStreamReader(new SequenceInputStream(v.elements())));
										//new SequenceInputStream(Enumeration e)
		PrintWriter p = new PrintWriter("4.txt");	//输出流的定义
		String str = null;

		while((str=buf.readLine()) != null)
		{
			p.println(str);				//打印在输出流上
			p.flush();					//刷新该流的缓冲,可以在SequenceInputStream中构造函数添加true,自动刷新,print则无效
		}
		p.close();
		buf.close();
	}
}


你可能感兴趣的:(黑马程序员_IO流_合并流SequenceInputStream及打印输出流PrintStream PrintWriter)