Java I/O 技术(十)—— I/O 功能流对象(一)

至此IO体系中的大半壁江山,已经学习完毕,接下来,主要学习的是:

IO 体系中的功能流对象!

 

1. 打印流

PrintWriter, PrintStream

可以直接操作输入流 和 文件。

 

PrintStream:

1.为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

2.提供了一系列的打印功能,可以打印任何数据。

3.它的特有方法不抛出 异常。

 

PrintStream的目的可以是:

 

1. File对象 。 可以指定字符集。

2. 字符串路径。 可以指定字符集。

3. 字节输出流。 可以指定是否自动刷新。

 

在此,需要重点注意的是两个方法:

write() 将接受到的整数的最后一个字节写入到流。会解析。它写的是最低8位。

 

print()可以将参数的数据表示形式打印到目的中。保证表示形式。

原理:是将“97”转成字符串,再write 到目的中去。

 

PrintWriter字符打印流: 

构造函数:

1. File对象。

2. 字符串路径

3. 字节输出流

4. 字符输出流

 

一般不用PrintWriter定义指定的编码表,为啥呢?

   因为要操作编码表有专用的对象。转换流。

而且转换流不仅可以设置写的编码表,还可以设置读的编码表。


2. 序列流:SequenceInputStream

   它的功能:实现对多个流进行合并。

   将多个流进行逻辑串联(进行合并,变成一个流,操作起来很方便,因为多个源变成了一个源)


演示:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;

public class SequenceInputStreamDemo {

	
	public static void main(String[] args) throws IOException {

		
		
		FileInputStream fis1 = new FileInputStream("tempfile\\seq_1.txt");
		FileInputStream fis2 = new FileInputStream("tempfile\\seq_2.txt");
		FileInputStream fis3 = new FileInputStream("tempfile\\seq_3.txt");
		
		//使用Vector时的情况:
		//需求枚举对象。而具备枚举对象是Vector集合。 
//		Vector<FileInputStream> v  = new Vector<FileInputStream>();
		ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
		v.add(fis1);
		v.add(fis2);
		v.add(fis3);
		
		/*
		final Iterator<FileInputStream> it = v.iterator();
		
		Enumeration<FileInputStream> en = new Enumeration<FileInputStream>(){

			@Override
			public boolean hasMoreElements() {
				
				return it.hasNext();
			}

			@Override
			public FileInputStream nextElement() {
				
				return it.next();
			}
			
		};
		*/
		//不使用Vector时的情况,用Collections工具类。
		Enumeration<FileInputStream> en = Collections.enumeration(v);
		
		SequenceInputStream sis = new SequenceInputStream(en);
		
		//创建目的。
		FileOutputStream fos = new FileOutputStream("tempfile\\seq_4.txt");
		
		
		byte[] buf = new byte[1024];
		int len = 0;
		
		while((len=sis.read(buf))!=-1){
			
			fos.write(buf,0,len);
			
		}
		
		fos.close();
		sis.close();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值