javaday52_IO流_打印流PrintStream和序列流SequenceInputStream

package java_Studing_day52_IO流12_PrintStream;


import java.io.FileNotFoundException;
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();
    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值