zoukankan      html  css  js  c++  java
  • javaIO-字符流

    2、字符流

    2.1字符流

    为什么出现字符流?
    一个字符经过编码后可能占用不同的字节数,字符和字节不是一一对应的关系,编码后的字符有可能变成数量不等的字节
    使用字节流在操作文本文件的时候不是很方便,不能准确控制到底多少个字节对应一个字符?
    所以Java提供了专门用来操作字符的字符流(所以字符流只针对文本文件)
    能准确的从流中 获取/放入 字符

    2.2字符集(编码方案)charSet

    ASCII:美国标准委员会制定,用一个字节的7位表示一个字符
    ISO8859-1:欧洲,拉丁编码,用一个字节的8位表示一个字符
    GBK:中文编码,用两个字节表示一个中文字符
    GB2312:GBK的升级版本,拥有更多的字符
    GB18030:GBK取代版本,但使用不是很广泛
    BIG-5:繁体字的编码
    
    Unicode:国际标准码,绝大多数的字符使用两个字节编码,称为Unicode编码
    
    UTF-8:一种Unicode编码实现方案,当程序中出现的字符需要写到硬盘上的文件,或者通过网络传输时,需要指定编码方案,并由此方案将字符编成具体的字节
    特点:是一种变长的编码方案,编码后的字符有可能占用1-4个字节:
    英文占一个字节,中文一般占用三个字节

    2.3流的转换

    转换流:OutputStreamWriter
    字节流 到 字符流 的一种桥梁,
    可使用指定的字符集将要写入流中的字符编码成字节
    操作的数据单位是:字符
    将对字节的操作转换成对字符的操作
    本质上也是一种包装流,读写数据是通过底层的流实现的


    构造方法:
    OutputStreamWriter(OutputStream out)
      创建使用默认字符编码的 OutputStreamWriter
    OutputStreamWriter(OutputStream out,String charsetName)
      创建使用指定字符集的 OutputStreamWriter

    void write(int b)
      写一个字符
    void write(String str)
      写一个字符串
    void write(String str,int off,int len)
      写一个字符串一部分
    void write(char[] ch)
      写一个字符数组
    void write(char[] ch,int off,int len)
      写一个字符数组一部分

    转换流:InputStreamReader
    从字节流中读取数据,根据指定的字符集解码成字符

    构造方法:
    InputStreamReader(InputStream in)
      用默认字符集创建转换流
    InputStreamReader(InputStream in,String charsetName)
      用指定字符集创建转换流  charsetName:”gbk” “utf-8”···
    读取数据:
    int read()
      读取单个字符 读到没有返回-1
    int read(char[] ch)
      读取字符,并放入一个字符数组 读到没有返回-1

    练习

    转换流练习:文本文件复制
    1.将当前项目路径下的a.txt复制一份为b.txt
    2.将c:/name.txt复制到当前项目路径下
    
    要求使用两种方式实现读写文件
    一次读取一个字符
    一次读取一个字符数组

    2.4 转换流的简化类:FileWriter FileReader

    在使用转换流过程中发现,平时操作都是在本地平台上操作,完全没有必要指定字符集,
    而转换流的名字太长,所以Java提供了转换流的简化子类,方便那些使用默认字符集的场景

    FileWriter
      OutputStreamWriter类的简化类,默认使用平台默认字符集
    FileReader
      InputStreamReader类的简化类,默认使用平台的默认字符集

    这两个类的方法基本和它们的转换流父类相同。

  • 相关阅读:
    css基础
    什么是css
    js写guess网页
    JavaScript_day02
    html基础知识
    JavaScript_day01
    由一个瀑布流导出对滚动条滚动距离,可视区尺寸,元素尺寸的内容的知识点
    一个页面从输入URL到页面加载显示完成,这个过程中发生了什么?
    http常用状态吗以及分别代表什么意思?
    cookies,sessionStorage和localStorage的相同点和不同点?
  • 原文地址:https://www.cnblogs.com/wqbin/p/11240786.html
Copyright © 2011-2022 走看看