字符流&字节缓冲流

  • IO中的流按照流向分为什么?

    • 输入流(读取数据)/输出流(写出数据)
  • IO中的流按照类型分为什么?

    • 字节流(任意文件)/字符流(文本文件) -> 字节流是万物之母,遇事不决字节流.
  • 字节流中的读的方法分为哪几种?我们常用哪种?格式是什么?

    • read(); -> 一次读取一个字节的数据,会将读取到的数据封装到返回值中.

    • read(byte[] bys) -> 一次读取一个字节数组的数据,会将读取到的数据封装到字节数组中,会将本次读取到的有效数据的长度作为返回值返回(常用)

      • fis -> 已经绑定好.
        
        byte[] bys = new byte[1024];
        int len;
        while((len = fis.read(bys)) != -1){
            //操作bys.
        }
        
  • 字节流中的写的方法分为哪几种?我们常用哪种?格式是什么?

    • write(int c); -> 一次写出一个字节的数据.

    • write(byte[] bys); -> 一次写出一个字节数组的数据.

    • write(byte[] bys,int off,int len) -> 一次写出一个字节数组的一部分,从off位索引开始写,写len个数据.

      • fis/fos -> 都已经绑定好文件了.
        
        byte[] bys = new byte[1024];
        int len;
        while((len = fis.read(bys)) != -1){
            fos.write(bys,0,len);
        }
        
A.字节缓冲流 10分45秒 掌握 -> 是对字节流的一个增强.
  • 问题回顾与知识点总结

    • 如何初始化字节缓冲输入流/字节缓冲输入流? 装饰者模式

      • 字节缓冲流没有读写的功能,一切读/写都是依靠被它增强的字节流,所以说在创建字节缓冲流的时候应该传入一个字节流参数.

      • //初始化字节缓冲输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(String pathName/File file));
        
        //初始化字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(String pathName/File file));
        
    • 字节缓冲输入流/输出流的操作方法和字节输出流/输入流有什么区别?

      • 没有区别.
    • 字节缓冲输入流/输出流的好处是什么?

      • 因为本身就是对字节流的一个增强 -> 实际上增强了字节流的性能/效率.
B.字节流复制视频 11分2秒 练习
  • 练习
    • 练习使用字符缓冲流复制视频,查看时间.
C.为什么出现字符流 7分44秒 理解
  • 问题回顾与知识点总结
    • 为什么会出现字符流?字符流是什么组成的?
      • 方便我们操作文本文件,字符流 = 字节流 + 编码表
    • 底层如何识别中文?
      • 一个中文 = 3个字节(第一个字节永远是一个负数)
D.编码表 8分3秒 理解
  • 问题回顾与知识点总结
    • 编码和解码 -> 按照某种规则将数据写入称为编码,从文件中/系统中按照某种规则读取数据称为解码.
    • 我们常用的编码表有哪些?
      • ASCII码表 0-127[,.]
      • GBK 中国使用的码表(里面包含了两万多个常用的汉字) -> 1个汉字 = 2个字节
      • Unicode 万国码 (包含绝大多数国家的文字/符号) -> UTF-8 1个汉字 = 3个字节
E.字符串中的编码解码问题 6分17秒 掌握
  • 问题回顾与知识点总结

    • 如何指定数组的编码方式/如何指定数组的解码方式?

      • String s = "中国";
        
        //存储为GBK的编码,实际上就是将字符串转换为字节数组的时候,要指定编码的方式.
        byte[] bys = s.getBytes("GBK"); //bys长度就是4.
        
        //解码 -> 在构建String对象的时候,指定解码的方式.
        String ss = new String(bys,"GBK");
        
        //如果不指定编码和解码的形式,那么默认会按照UTF-8进行编码/解码.
        
F.字符流中的编码解码问题 10分42秒 掌握
  • 问题回顾与知识点总结

    • 字符流的顶级父类是哪两个类?

      • Reader(读取)/Writer(写入)
    • 如何创建指定编码的字符流?

      • //创建字符输入流 
        InputStreamReader isr = new InputStreamReader(new FileInputStream(String pathName/File),String charName);
        
        //创建字符输出流
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(String pathName/File),String charName);
        
    • 字符输出流的写的方法有什么特点?

      • write(String str); 可以写一个字符串的数据到文件中.
    • 字符输入流的读的方法有什么特点?

      • read();返回值:int -> 之前一次只可以读取一个字节的数据(一个汉字三分之一) 但现在可以一次读取一个字符的数据了.
    • InputStreamReader/OutputStreamWriter -> 原生字符流/转换流

G.字符流写数据的5种方式 11分1秒 掌握
  • 问题回顾与知识点总结
    • 字符流写数据的五种方式的作用分别是什么?最常使用哪种?
      • write(int c) -> 写一个字符数据到文件中(不常用)
      • write(char[] ch) -> 写一个字符数组的数据到文件中.
      • write(char[] ch,int off,int len) -> 写一个字符数组的一部分到文件中(复制)
      • write(String s); -> 写一个字符串到文件中(操作文件的文本内容)
      • write(String s,int off,int len) -> 写一个字符串的一部分到文件中.
    • 如果想要数据从缓冲区写入文件中,需要做什么操作?
      • flush()或者close()
H.字符流读数据的2种方式 4分57秒 掌握
  • 问题回顾与知识点总结
    • 字符流读数据和字节流读数据的区别是什么?
      • read(); -> 字符流一次读一个字符的数据,字节流一次读一个字节的数据.
      • read(char[] chs)/read(byte[] bys); -> 字符流一次读取一个字符数组,字节流一次读取一个字节数组.
I.字符流复制Java文件 4分38秒 练习
J.字符流复制Java文件改进版 8分 练习
  • 问题回顾与知识点总结

    • OutputStreamWriter和InputStreamReader类名较长,书写不方便,而且使用默认编码的情况可以进行简化书写,要使用这两个流的哪个子类呢?

      • FileRedaer

        • FileReader fr = new FileReader(String pathName/File file);
          
      • FileWriter

        • FileWriter fw = new FileWriter(String pathName/File file,boolean append)
          
  • 练习

    • 使用FileReader和FileWriter进行java文件的复制.
K.字符缓冲流 8分20秒 掌握
  • 问题回顾与知识点总结

    • 如何初始化字符缓冲流?

      • //初始化字符缓冲输入流
        BufferedReader br = new BufferedReader(new FileReader(String pathName/File file));
        
        //初始化字符缓冲输出流
        BufferedWriter bw = new BufferedWriter(new FileWriter(String pathName
        /File file));
        
    • 字符缓冲流的使用和字符流有什么区别?

      • 没有区别.
L.字符缓冲流复制Java文件 3分50秒 练习
  • 练习
    • 使用字符缓冲流复制Java文件.
M.字符缓冲流特有功能 7分46秒 掌握
  • 问题回顾与知识点总结
    • 如何使用字符缓冲流实现换行?
      • 直接使用字符缓冲流对象的newLine()的方法 -> 会根据系统属性自动生成换行符.
    • 字符缓冲流的readLine方法有什么特点?
      • 可以读取一行数据,读到的数据中不包括任何终止字符(不包含换行符),返回值是String.
      • 当读到了文件的末尾,则返回的String的是null.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值