java学习笔记(利用字符流对文本文件的复制)

一点小小的反思总结:

1.字符流的读取模式是按照字符,两种主要的方法分别为逐字读取

int a=a1.read();
        while(a!=-1){
            a2.write(a);
            a=a1.read();
        }
//逐字读取然后写入

以及利用缓冲数组进行读取(效率会高一些)

char[] arr=new char[5];
        int ler=a1.read(arr);//有效长度yyds
        while(ler!=-1){
            for(int i=0;i<ler;i++){
                //先变成字符串,这个也不是不行...
                /*String str=new String(arr,0,len);
                a2.write(str);*/

                a2.write(arr[i]);
            }
            ler=a1.read(arr);
        }

2.每次完成赋值操作都要记得把对应的流对象逆序关闭

3.不要用字符流去复制非文本文件

4.关于覆盖问题写在注释里面了;

//利用字符流进行文本复制的操作,
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class io妈妈 {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:"+File.separator+"data.txt");
        File f2=new File("D:"+File.separator+"demo.txt");
        if(!f2.exists()){
            f2.createNewFile();
        }
        FileReader a1=new FileReader(f1);
        FileWriter a2=new FileWriter(f2,true);
       /* int a=a1.read();
        while(a!=-1){
            a2.write(a);
            a=a1.read();
        }*/
        //这里发现一个小小的问题,这个复制的效果并不是追加...而是重新输入
        //也就是说无论是这个文件如何,最终都会被强行赋值为第一个文件的东西
        //FileWriter a2=new FileWriter(f2);原因在于这个语句
        //如果改成FileWriter a2=new FileWriter(f2,true);
        //就可以实现追加的操作;


        //如果采用一次复制多个的方法
        char[] arr=new char[5];
        int ler=a1.read(arr);//有效长度yyds
        while(ler!=-1){
            for(int i=0;i<ler;i++){
                //先变成字符串,这个也不是不行...
                /*String str=new String(arr,0,len);
                a2.write(str);*/

                a2.write(arr[i]);
            }
            ler=a1.read(arr);
        }
        //所以说是三种方法,逐个字符写入,数组写入,和拼成字符串写入


        //流的关闭最好是倒着来的//
        a2.close();
        a1.close();
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值