io流-day2

前边已经用到 int read():用于读取单个字符。

需求:定义一个字符数组,用于存储读到字符.(重要)

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class FileReaderDemo2 {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("demo.txt");
       char []buf=new char[3];
    //int read(char[] buf):返回的int代表数据字符个数
       int num=fr.read(buf);
        System.out.println("num="+num+"..."+new String(buf));
        int num2=fr.read(buf);
        System.out.println("num2="+num2+"..."+new String(buf));
     fr.close();
    }

}

需求:打印一个.java文件,并打印在控制台上

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class FileReaderDemo3 {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("Demo.java");
      char [] buf=new char[1024];
     int num=0;
      while((num=fr.read(buf))!=-1){
          //数据在buf数组了,把数组转成字符串
          System.out.println(new String(buf,0,num));
      }
      fr.close();
    }

}

需求:把demo1.txt的东西写到demo2.txt

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileReaderDemo4 {
  public static void main(String[] args) throws IOException {
    //把demo1的东西写到demo2
     FileReader fr=new FileReader("demo1.txt");
     FileWriter fw=new FileWriter("demo2.txt");
     int c=0;
     while((c=fr.read())!=-1){
        //FileWriter下的public void write(int c):c代表要写入字符的int
         //这个方法从demo1.txt读一个字符,就往demo2.txt写入一个,依次轮回,效率低
         fw.write(c);
     }
  fr.close();
  fw.close();
     
  }
}

改进效率问题以及进行规范的try--catch(重点):

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        FileReader fr=null;
        FileWriter fw=null;
        try{
         fr=new FileReader("demo1.txt");
          fw=new FileWriter("demo2.txt");
     char []buf=new char[1024];
     int num=0;
     while((num=fr.read(buf))!=-1){
         fw.write(buf,0,num);
     }
     }
        catch(IOException e){
            throw new RuntimeException("读写失败");
        }
        finally{
            if(fr!=null){
                try{
                    fr.close();
                }catch(IOException e){}
                finally{if(fw!=null)
                    try{
                        fw.close();
                    }catch(IOException e){}}
                
            }
        }
            
            }    
    }
        
    

 

posted on 2017-02-21 10:11  chenqr11  阅读(126)  评论(0编辑  收藏  举报