暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

BufferedReader和BufferedWriter

353
  • 节点流和包装流

    • 节点流:节点流针对的是具体的数据源操作的流,比如针对文件操作的流,针对字符数组操作的流,针对管道操作的流,针对字符串操作的流, 因此节点流只能处理固定数据格式存储的数据,因此如果在网络编程中不知道对方传递的是什么格式的数据时使用比较困难。

    • 节点流具体如下

      • FileInputStream / FileOutputStream
        FileReader / FileWriter
        ByteArrayInputStream / ByteArrayOutputStream
        ByteArrayReader / ByteArrayWriter
        PipedInputStream /PipedOutputStream
        PipedReader / PipedWriter
        StringReader / StringWriter


      • 包装流:包装流实际上是对节点流的一种封装,性能比节点流更加强大,用到的是【装饰器设计模式】,包装流的强大的地方在于可以接受任意格式的节点流数据,对于网络编程常用的是包装流来处理。

      • 包装流具体如下

        • BufferedInputStream /BufferedOutputStream
          BufferedReader / BufferedWriter
          InputStreamReader /OutputStreamWriter
          ObjectInputStream /ObjectOutputStream
        • 包装流的源码

      • BufferedReader

        • BufferedReader是一种Reader的包装流,其内部实际上还是用节点流去处理数据。

        public class BufferedReaderDemo {


        public static void main(String[] args) {
        String filePath = "/Users/lianglin/code/ioStream/test1.txt";
        BufferedReader bufferedReader = null;
        String line = null;
        try {
        //包装流中封装了个节点流,性能更加强大
        bufferedReader = new BufferedReader(new FileReader(filePath));
        while((line = bufferedReader.readLine())!=null){
        System.out.println(line);
        }
        } catch (FileNotFoundException e) {
        e.printStackTrace();
        } catch (IOException e) {
        e.printStackTrace();
        }finally {
        if(bufferedReader!=null){
        try {
        //关闭外层的包装流即可,内层的节点流也会关闭。
        bufferedReader.close();
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }
        }
        }
        • BufferedWriter

          • 注意:任何写入操作都需要注意是追加的方式还是覆盖的方式。

          • 任何包装流底层都是直接调用节点流来处理数据

          public class BufferedWriterDemo {
          public static void main(String[] args) {
          String filePath = "/Users/lianglin/code/ioStream/test.txt";
          BufferedWriter bufferedWriter = null;
          try {
          //以追加的方式写入
          bufferedWriter = new BufferedWriter(new FileWriter(filePath,true));
          //以覆盖的方式写入
          //bufferedWriter = new BufferedWriter(new FileWriter(filePath));
          String content = "数据内容";
          bufferedWriter.write(content);
          } catch (IOException e) {
          e.printStackTrace();
          }finally {
          if(bufferedWriter!=null){
          try {
          //关闭外层流,节点流也会被调用
          bufferedWriter.close();
          } catch (IOException e) {
          e.printStackTrace();
          }
          }
          }
          }
          }


          vip算法班双十一优惠价详情最后两天到期,加我微信merlinssea即可报名参加~

          vip算法训练营永久直播课双十一优惠详情:

          奔跑的小梁,公众号:梁霖编程工具库leetcode刷题直播教学,手把手带你刷题,双十一优惠价来啦~~


          下面是双十一期间授课记录的链接,需要的同学可以试听一节课。

          主题: 微信公众号号merlinsea-11.11日算法课

          日期: 2022-11-11 08:22:51

          录制文件:https://meeting.tencent.com/v2/cloud-record/share?id=1daadb4b-473c-4c0b-8876-57471101fb0f&from=3

          访问密码:BGHY

          有效期:于2022-11-18 09:25:47过期


          文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论