字符流

字符流

*特点:只用于处理字符,处理文本文件
Reader --输入
Write--输出

字符流实现复制文件,并修改文件中的字符

实现了把"介绍.txt内容复制到"实际介绍.txt",并且修改了第一个文件的占位符
image
result
image

public class Filecopycharacter {
    public static void main(String[] args) throws IOException {
        Reader reader=null;
        Writer writer=null;
        try {
            //定义字符流
             reader = new FileReader(new File("d:/介绍.txt"));
             writer = new FileWriter(new File("d:/实际介绍.txt"));
            StringBuilder sb = new StringBuilder();
            //把文件输入到内存中
            char[] chars = new char[4]; //每次只读取四个字符
            int len=-1;
            while((len=reader.read(chars)) !=-1){ //每次读取字符的个数
                 sb.append(chars,0,len);
            }
            System.out.println(sb);
            //替换占位符
            String s=sb.toString();
            String res=s.replace("{name}","阿杰").replace("{play}","这里玩").
                    replace("{house}","房子");
            //内存-->文件(writer)
             writer.write(res);
            // writer.flush();  //将管道中的数据刷出到文件中
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭流
            if(writer != null) writer.close();
            if(reader != null) reader.close();
        }
    }
}

自带缓冲区的字符流

BufferedReader--输入
BufferedWriter--输出
定义:
带缓冲区的字符流 对象=new 带缓冲区的字节流(字节流);
BufferedReader br = new BufferedReader(reader);

BufferedReader实现cory一个文件:

public class FilecopyBufferead {
 public static void main(String[] args) throws IOException {
     Reader reader=null;
     Writer writer=null;
     BufferedReader br=null;
     BufferedWriter bf=null;
     try {
          reader = new FileReader(new File("d:/介绍.txt"));
          writer = new FileWriter("d:/实际介绍.txt");
          br = new BufferedReader(reader); //自带缓冲区的输入字符流
          bf = new BufferedWriter(writer);
         StringBuilder sb = new StringBuilder();
         String line=null;
         while((line=br.readLine()) != null){ //当每一行都有数据读取时
            //字符拼接
             sb.append(line);
         }
        // 进行替换
         String s=sb.toString();
         String res=s.replace("{name}","阿杰").replace("{play}","这里玩").
                             replace("{house}","房子");
       //  System.out.println(res);
          //输出到文件
         bf.write(res);
     }catch (Exception e){
         e.printStackTrace();
     }finally {
         //关闭流
         /**
          * 原则: 先关出再关入
          *   先关外再关内 例: BufferedReader br = new BufferedReader(reader)
          */
         if(bf != null) bf.close();
         if(br != null) br.close();
         if(writer != null) writer.close();
         if(reader != null) reader.close();
     }
 }
}
posted @ 2021-07-15 17:37  nb小歪  阅读(44)  评论(0编辑  收藏  举报