java IO主要字节流和字符流,以及继承关系

1.字节缓冲区的使用(提高效率,可以保护磁盘)(主要使用FileInputStream 类和FileOutputStream 类)

FileInputStream in= new FileInputStream("e:\\source.txt");
  FileOutputStream out  = new FileOutputStream("e:\\target.txt");  
  
  byte[] buff =new byte[1024];//作为缓冲区,用于存读入的数据
  int i;
  String str = null ;
  while((i=in.read(buff))!=-1) {
   out.write(buff,0,i);//防止将数组空余的写入文件
   str = new String(buff,0,i);//将数组转化为String类型,并且去掉数组的空余元素
  }  
  System.out.println(str);
  in.close();
  out.close();

2.字节缓冲流(可以达到使用缓冲区一样的效果)(主要使用BufferedInputStream 类和BufferedOutputStream 类)在构造方法中接收FileInputStreamFileOutputStream对象

FileInputStream in= new FileInputStream("e:\\source.txt");
  FileOutputStream out  = new FileOutputStream("e:\\target.txt");  
  
  BufferedInputStream bis = new BufferedInputStream(in);
  BufferedOutputStream bos = new BufferedOutputStream(out);
  
  int i;
  while((i=bis.read())!=-1) {
   bos.write(i);
  }    
  bis.close();
  bos.close();

3.字符流(与字节缓冲区的使用类似)(主要使用FileReader 类和FileWriter 类)

FileReader in= new FileReader("e:\\source.txt");
  FileWriter out  = new FileWriter("e:\\target.txt");  
  
  int i;
  String str = null;
  char [] buff = new char[1024];
  while((i=in.read(buff))!=-1) {
   out.write(buff,0,i);
   str = new String(buff,0,i);
  } 
  System.out.println(str);
  in.close();
  out.close();

4.字符缓冲流(主要使用BufferedReader类和BufferedWriter 类)在构造方法中接收FileReader FileWriter 对象

 FileReader in= new FileReader("e:\\source.txt");
  FileWriter out  = new FileWriter("e:\\target.txt");  
  
  BufferedReader br = new BufferedReader(in);
  BufferedWriter bw = new BufferedWriter(out);
 
 String str = null;
  while((str=br.readLine())!=null) {//readLine()方法一次性可以读取一行
   out.write(str);
   System.out.println(str);
  } 
  br.close();
  bw.close();


5、字节流与字符流之间的转换InputStreamReader OutputStreamWriter类

    

//字节缓冲流
  BufferedInputStream bis = new BufferedInputStream( new FileInputStream("e:\\source.txt"));
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("e:\\target.txt"));  

  //将字节流转换为字符流  用InputStreamReader OutputStreamWriter类
  InputStreamReader isr = new InputStreamReader(bis);
  OutputStreamWriter osw = new OutputStreamWriter(bos);
  
  //将转换过后的字符流包装为缓冲流
  BufferedReader br = new BufferedReader(isr);
  BufferedWriter bw = new BufferedWriter(osw);
 
 String str = null;
  while((str=br.readLine())!=null) {//readLine()方法一次性可以读取一行
   bw.write(str);
   System.out.println(str);
  } 
  br.close();
  bw.close();


6.PrintWriter (高效、方便、支持字节流和字符流的使用)

BufferedInputStream bis = new BufferedInputStream( new FileInputStream("e:\\source.txt"));
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("e:\\target.txt"));  
  
  PrintWriter pw = new PrintWriter(bos);
  int i = -1;
  while((i=bis.read())!=-1) {
   pw.print((char)i);
   System.out.println(i);
  } 
  bis.close();
  pw.close();

Writer

       BufferedWriter ……过流流

       CharArrayWriter……结点流

       FilterWriter……过滤流

       OutPutStreamWriter ……过滤流

              FileWriter……结点流

       PipedWriter……结点流

StringWriter……结点流

PrintWriter……过滤流

 

Reader

       BufferedReader ……过滤流

              LineNumberReader……过滤流

       CharArraReader……结点流

       FilterReader……过滤流

              PushbackReader……过滤流

       InputStreamReader……过滤流

              FileReader……结点流

       PipedReader……结点流

StringReader……结点流


InputStream                                     

ByteArrayInputStream  ……结点流    

FileInputStream  ……结点流

FilterInputStream  ……过滤流

         BufferedInputStream……过滤流

         DataInputStream……过滤流

         LineNumberInputStream…过滤流

         PushbackInputStream……过滤流

ObjectInputStream……过滤流

PipeInputStream……结点流

SequenceInputStream……过滤流

StringBufferInputStream……结点流

 

OutputStream                                 

ByteArrayOutputStream  ……结点流         

FileOutputStream  ……结点流

FilterOutputStream  ……过滤流

         BufferedOutputStream…过滤流

         DataOutputStream……过滤流

         PrintStream……过滤流

ObjectOutputStream……过滤流

PipeOutputStream……结点流

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值