import java.io.IOException;
import java.io.PrintStream;
一,printStream
public class printStreamDemo {public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
/*
* PrintStream:
* 1.提供了多种打印方法,可以对多种数据类型值进行打印,并保持数据的表示形式,接收什么类型,打印什么类型
* 2.他不抛IOException
*
* 构造函数接收三种数据类型:
* 1.字符串路径 打印到路径所对应的文件中
* 2.File对象 打印到指定目录,(将字符串路径封装)
* 3.字节输出流 打印到流中
*
*
*
*
*
*
* ****/
PrintStream out=new PrintStream("printStream.txt");
out.write(609);//打印的int型,int只有8位,所以只打印最低8位到目的地,结果为a
//out.print(97);//将97先变成字符串保持原样将数据打印到目的地
out.close();
}
}
二,字符打印流,PrintWrite
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class PrintWriterDemo {
public static void main(String[] args) throws IOException {
/*******
* 字符打印流:
* 构造函数可接收对象:
* 1.字符串路径 打印到文件中
* 2.File对象 打印到指定File对象中
* 3.字节输出流 打印到字节流中
* 4.字符输出流 打印到字符流中
*
*
*
*
* */
//开启字符字节转换流流,获取键盘录入
BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
//打印到系统输出流
PrintWriter out=new PrintWriter(System.out,true);//没有无参构造方法,后边带上Bloean型,如果是true,则自动刷新
PrintWriter out1=new PrintWriter(new FileWriter("out.txt"),true);//字符输出流将文件地址封装起来,后边带上Bloean型,如果是true,则自动刷新
String line =null;
//读取键盘输入的数据
while((line=bfr.readLine())!=null){
if("over".equals(line))
break;
//将字符串变成大写打印到目的地:系统输出流
out1.println(line.toUpperCase());
//out.println();
//out.flush();
}
out.close();
bfr.close();
}
}
三,序列流SequenceInputStream
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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;
import java.util.Vector;
/***********************
* sequenceInputStream:
* 序列流,作用:将多个流合并到一个流中,并序列化
*
*
*
* */
public class sequenceInputStream {
public static void main(String[] args) throws IOException {
/****
* 需求:将1.txt 2.txt 3.txt文件中的信息合并到一个文件中
*
*
* */
/**************************方法一*************************/
//新建可增长的对象数组集合,但是vector效率低
// Vector<FileInputStream> v=new Vector<FileInputStream>();
//添加三个流到集合中
// v.add(new FileInputStream("f:\\1.txt"));
// v.add(new FileInputStream("f:\\2.txt"));
// v.add(new FileInputStream("f:\\3.txt"));
//取到集合的枚举
// Enumeration<FileInputStream> en=v.elements();
/**************************方法二*************************/
ArrayList<FileInputStream> arr=new ArrayList<FileInputStream>();
arr.add(new FileInputStream("F:\\1.txt"));
arr.add(new FileInputStream("F:\\2.txt"));
arr.add(new FileInputStream("F:\\3.txt"));
//用迭代器代替枚举
final Iterator<FileInputStream> it=arr.iterator();
//直接调用Collection的静态方法返回一个枚举对象
Enumeration<FileInputStream> en2=Collections.enumeration(arr);
/*********************************************************************************************************
//创造一个枚举对象
Enumeration<FileInputStream> en1=new Enumeration<FileInputStream>(){
//迭代每一个元素
public boolean hasMoreElements(){
return it.hasNext();
}
public FileInputStream nextElement(){
return it.next();
}
};
*******************************************************************************************************************/
//将多个源合并为一个源
SequenceInputStream sis=new SequenceInputStream(en2);
FileOutputStream fos=new FileOutputStream("f:\\123副本1.txt");
byte[] buf=new byte[1024];
int len=0;
while((len=sis.read(buf))!=-1){
fos.write(buf);
}
fos.close();
sis.close();
}
}