• java知识学习35-字符流(IO流)


    一个中文:若是GBK编码,则占用两个字节;若是UTF-8编码,则占用三个字节;中文的第一个字节一般是负数的,所以通过字节数组读写中文时会自动根据不同编码适配,但通过字节读写时每次读取一个字节所以不能拼接为中文。如下图

    字符流:为字节流+编码表。

      

      编码表: 

        

      字符集:

        

      ASCII字符集:当时主要用于欧美国家,所以后面为了适应中文字符,出现了GBXXX系列字符集。

        

      GBXXX字符集:

        

      Unicode字符集:为了适用各国各种语言编码,出现了Unicode可为任意语言的任意字符设计的一种统一标准。

        

    字符串中的编码和解码:编码和解码必须是同一个字符集规则,否则会出现乱码。

      

    字符流的编码和解码:编码和解码必须是同一个字符集规则,否则会出现乱码。

      字符流的抽象类:Reader(字符输入流的抽象类);Write(字符输出流的抽象类)。

      字符流的实现类: 

        InputStreamReader:是从字节流到字符流的桥梁,主要是读取字节,并用指定字符集解码为字符。每次可读取一个字符或一个字符数组。

        OutputStreamReader:是从字符流到字节流的桥梁,主要是写入字符,并用指定字符集编码为字节。每次可写入一个字符或一个字符数组。

      字符流写数据的5种方式:字符流写数据不会直接写到文件里还在缓冲区中,需通过flush方法进行刷新写入文件中。(由于close方法释放资源之前会执行刷新,所以有些情况不手动flush,但写入数据量较大时,一般习惯写一部分数据手动刷新一次,避免一次性写入大量数据效率好)

            

       字符流读数据的2种方式:

        

      字符流和字节流读写数据的区别:

        1、两种方式读写数据格式基本一样,字符流读写的是字符,字节流读写的是字节;

        2、字符流写文件时会先存放到缓冲区,所以不会直接写入文件,所以需要进行刷新流的动作写入文件,而字节流时直接操作写入文件的。

    字符流读写简化子类:FileReader、FileWrite这两个分别继承于InputStreamReader和OutputStreamReader,主要就是为了简化写法的,但如果涉及到字符编码格式问题,仍需用他们的父类。

    字符缓冲流:用于提高字符读写的效率。

      字符缓冲流写数据的三个步骤:1、写数据;2、调用换行符;3、调用刷新流方法。

      

      字符缓冲流特有功能:

        

    IO流总结:

      字节流:

      

      字符流:

      

    复制文件的异常处理:

      

  • 相关阅读:
    gnome-shell 使用 notify-send 发送桌面消息
    fedora 中从命令行中直接打开资源管理器
    wget curl 的 使用方法
    NFS 系统的搭建 on fedora; nfs 搭建 on ubuntu 1806;
    -bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory
    Linux 快速查看系统配置-熟悉新环境的配置
    2019-11-7-WPF-How-to-get-plain-text-from-RichTextBox
    2018-8-10-git-push-错误-hook-declined-
    2018-12-25-win2d-图片水印
    2018-8-10-win10-UWP-用Path画图
  • 原文地址:https://www.cnblogs.com/blogofzxf/p/14672511.html
Copyright © 2020-2023  润新知