JAVA中IO流之缓冲流读写

BufferedReader的使用是需要FileReader配合

程序在读取时一个字一个字符读取,也可以存数组中,但是使用BufferedReader后,会带有一个缓冲区内存空间。会把数据源中字符批量的读取在缓冲区中,下面程序在读取时不用一个一个字符访问数据源,在缓冲区中读取数据
按执行读取内容的readLine()方法

缓冲流读操作

 public static void main(String[] args) {
        //BufferedReader的使用是需要FileReader配合
        File file =new File("D:/a/1.txt");
        FileReader fr=null;
        BufferedReader br=null;

        try {
            fr=new FileReader(file);
            br=new BufferedReader(fr);

            //只读一行
           //String s= br.readLine();
            //System.out.println(s+"读取成功");
            String s= br.readLine();
            while (s!=null){
                System.out.println(s);
                s= br.readLine();
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                assert fr !=null;//断言 判断是否为空
                fr.close();
                assert br !=null;
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

BufferedWirte写入操作

System.out.println("===========写入操作========");
        File file=new File("D:/a/4.txt");
        FileWriter fw=null;
        BufferedWriter bw=null;

        try {
            fw=new FileWriter(file);
            bw=new BufferedWriter(fw);
            bw.write("大山"+"写入成功");
            //bw.flush();


        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bw.close();
                fw.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

读写操作需要注意关流顺序

 public static void main(String[] args) {
        File file1 = new File("D:/a/bb.txt");
        File file2 = new File("D:/a/ee.txt");

        FileReader fr = null;
        FileWriter fw = null;
        BufferedReader br = null;
        BufferedWriter bw = null;


        try {
            fr = new FileReader(file1);
            fw = new FileWriter(file2);
            br = new BufferedReader(fr);
            bw = new BufferedWriter(fw);

            String s = br.readLine();
            bw.write(s);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //缓冲流 因为构造需要一个Reader 或Writer
                //所以关闭资源的时候 先关闭缓冲流 再关闭字符流

                /*
                这里关闭流要从大到小关闭,BufferWriter包装了FileWriter,BufferWriter"大",FileWriter"小"
                FileWriter.close();
                BufferWriter.close();
                这样的顺序就是不行,FileWriter流自己关闭了。
                然后BufferWriter流又把FileWriter流关闭一次就会报错java.io.IOException: Stream closed.
                 */
                br.close();
                bw.close();
                fr.close();
                fw.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值