Java_io_合并流及打印输出流

本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/8886910

IO流简介>> 

1.PrintStream和PrintWriter

     (1).构造函数接收类型

      1).File对象
      2).String字符串路径
      3).OutputStream字节输出流

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

     (2).打印流的字段刷新

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

2.SequenceInputStream

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

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

3.代码实现  

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

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

class PrintStreamDemo
{
	public static void main(String[] args) throws Exception
	{
		Vector<FileInputStream> v = new Vector<FileInputStream>();
		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<? extends InputStream> 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();
	}
}


你可能感兴趣的:(PrintWriter,enumeration,printstream)