zoukankan      html  css  js  c++  java
  • 转换流 能够转换文件的编码格式,

    转换流[字节流<-->字符流]

    以指定的格式读取文件,最好是文件的本身的格式, 然后以自己需要的格式写出,来达成转码的需求

    字符编码:

    按照某种规则,将字符存储到计算机中,称为编码;反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码

    在进行编码和解码过程中,我们必修采用是同一种规则,才能数据正常,否则,会导致来拿吗现象.

    • 字符编码:就是一套自然语言中的字符与二进制数之间的对应规则.

    字符集:

    字符集:是一个系统可支持的所有字符的集合,包含各国文字,标点符号,图形符号,数字等.也叫编码表.

    计算机中要准确的存储和识别各种文字的字符符号,需要进行字符编码,一套字符集至少有一套字符编码

    常见的字符编码集有ASCII字符集,GBK字符集.Unicode字符集

    ASCII字符集:

    • ASCII是基于拉丁字母的一套电脑编码系统

    • 基本的ASCII字符集,使用7位(bit)表示一个字符,共128个字符.ASCII的扩展字符集使用8位(bit)表示一个字符,共256个字符.

    ISO-8859-1字符集:

    拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰,单买,德语,意大利语,西班牙等.

     

    ISO-8859-1适用单字节编码,兼容ASCII编码.

    GB字符集

    • GB2312:简体中文码表,里面大概含有7000多个简体汉字,此外数学符号,罗马希腊的字母.日本的假名都编进去了,连在ASCII里的原来就有的数字.标点,字母都统统重新编写进去了,

    • GBK:最常用的中文编码.是在原来GB2312码表基础上进行扩展,使用双字节编码.共收录了,共收录了21000多个汉字,完全兼容GB2312,标准,同时支持繁体汉字以及日韩汉字等.

    • GB18030:最新的中文码表,共收录了70000多个汉字,采用多字节编码,每个字可以由1个字节,2个字节或者4个字节组成,支持国内少数民族的文字.同时支持繁体字以及日韩汉字等.

    Unicode字符集:

    • Unicode编码系统为表达任意语言的任意字符而设计的,是业界的一种标准,也成为了统一编码,标准万国码表

    • 它最多使用4个字节的数字来表示每个字母.符号.或者文字.有三种常见的编码方案:UTF-8,UTF-16,UTF-32.

    • UTF-8编码表,用来表示Unicode标准中的任意字符,编码规则:

      1.128个US-ASCII字符,使用的是一个字节编码

      2.拉丁子的字母,需要两个字节编码

      3.大部分常见的汉字,使用的是三个字节编码

      4.其他极少数的辅助字符,采用的四个字节编码

    编码会引发的问题

    由于编码规则不一致,导致引发乱码现象.

    那么如何读取GBK编码的文件呢

    InputStreamReader类

    转换流 java.io.inputStreamReader.是Reader的子类,它是从字节流到字符流的桥梁,它读取字节并使用指定的字符集将其解码为字符.它的字符集可以由名称指定,或者可以使用平台默认的字符集.

    构造方法

    • public inputStreamReader(inputStream in):创建一个使用默认的字符集的字符流.

    • public inputStreamReader(inputStream in,String charsetName):创建一个指定字符集的字符流

    OutputStreamWriter类

    转换流java.io.OutputStreamWriter是Writer的子类,它是字符流到字节流的桥梁.使用指定的字符集将字符编码为字节.它的字符集可以手动指定,特可以使用平台默认的字符集.

    构造方法

    • public OutputStreamWriter(OutputStream out):创建一个使用平台默认的字符集的字符流.

    • public OutputStreamWriter(OutputStream out,String charsetName):创建一个指定的字符集的字符流.

    • 转换流[字节流<-->字符流]

      字符编码:

      按照某种规则,将字符存储到计算机中,称为编码;反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码

      在进行编码和解码过程中,我们必修采用是同一种规则,才能数据正常,否则,会导致来拿吗现象.

      • 字符编码:就是一套自然语言中的字符与二进制数之间的对应规则.

      字符集:

      字符集:是一个系统可支持的所有字符的集合,包含各国文字,标点符号,图形符号,数字等.也叫编码表.

      计算机中要准确的存储和识别各种文字的字符符号,需要进行字符编码,一套字符集至少有一套字符编码

      常见的字符编码集有ASCII字符集,GBK字符集.Unicode字符集

      ASCII字符集:

      • ASCII是基于拉丁字母的一套电脑编码系统

      • 基本的ASCII字符集,使用7位(bit)表示一个字符,共128个字符.ASCII的扩展字符集使用8位(bit)表示一个字符,共256个字符.

      ISO-8859-1字符集:

      拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰,单买,德语,意大利语,西班牙等.

      ISO-8859-1适用单字节编码,兼容ASCII编码.

      GB字符集

      • GB2312:简体中文码表,里面大概含有7000多个简体汉字,此外数学符号,罗马希腊的字母.日本的假名都编进去了,连在ASCII里的原来就有的数字.标点,字母都统统重新编写进去了,

      • GBK:最常用的中文编码.是在原来GB2312码表基础上进行扩展,使用双字节编码.共收录了,共收录了21000多个汉字,完全兼容GB2312,标准,同时支持繁体汉字以及日韩汉字等.

      • GB18030:最新的中文码表,共收录了70000多个汉字,采用多字节编码,每个字可以由1个字节,2个字节或者4个字节组成,支持国内少数民族的文字.同时支持繁体字以及日韩汉字等.

      Unicode字符集:

      • Unicode编码系统为表达任意语言的任意字符而设计的,是业界的一种标准,也成为了统一编码,标准万国码表

      • 它最多使用4个字节的数字来表示每个字母.符号.或者文字.有三种常见的编码方案:UTF-8,UTF-16,UTF-32.

      • UTF-8编码表,用来表示Unicode标准中的任意字符,编码规则:

        1.128个US-ASCII字符,使用的是一个字节编码

        2.拉丁子的字母,需要两个字节编码

        3.大部分常见的汉字,使用的是三个字节编码

        4.其他极少数的辅助字符,采用的四个字节编码

      编码会引发的问题

      由于编码规则不一致,导致引发乱码现象.

      那么如何读取GBK编码的文件呢

      InputStreamReader类

      转换流 java.io.inputStreamReader.是Reader的子类,它是从字节流到字符流的桥梁,它读取字节并使用指定的字符集将其解码为字符.它的字符集可以由名称指定,或者可以使用平台默认的字符集.

      构造方法

      • public inputStreamReader(inputStream in):创建一个使用默认的字符集的字符流.

      • public inputStreamReader(inputStream in,String charsetName):创建一个指定字符集的字符流

      OutputStreamWriter类

      转换流java.io.OutputStreamWriter是Writer的子类,它是字符流到字节流的桥梁.使用指定的字符集将字符编码为字节.它的字符集可以手动指定,特可以使用平台默认的字符集.

    构造方法

    • public OutputStreamWriter(OutputStream out):创建一个使用平台默认的字符集的字符流.

    • public OutputStreamWriter(OutputStream out,String charsetName):创建一个指定的字符集的字符流.

    练习:转换文件的编码

    将GBK编码的文本文件,转换为UTF-8编码的文件.

    分析:

    1.指定GBK编码的转换流,读取文本文件.inputStreamReader

    2.使用UTF-8编码的转换流,写入到新文本文件中 OutputStreamWriter

      //1.1指定GBK编码的转换流,读取文本文件.inputStreamReader
           InputStreamReader bgk = new InputStreamReader(new FileInputStream(new File("day30-IO\GBK.txt")), "gbk");
          //1.22.使用UTF-8编码的转换流,写入到新文本文件中 OutputStreamWriter
           //此时不写编码格式也会默认是UTF-8,默认为平台的编码
           OutputStreamWriter fs = new OutputStreamWriter(new FileOutputStream(new File("day30-IO\UTF-8.txt")), "UTF-8");
           //2.使用转换流读取数据源文件
           //2.1定义一个指定长度的字符数组
           char[] chars = new char[1024];
           //2.2定义一个变量,记录读取到的有效字符个数
           int len=0;
           //2.3循环读取
           while ((len=bgk.read(chars))!=-1){
               //读取出来的数据要写入到目的地文件中
               fs.write(chars,0,len);
          }
           //4.关闭流,释放系统资源
           fs.close();
           bgk.close();

    序列化流

  • 相关阅读:
    Android 实现书籍翻页效果番外篇之光影效果
    ViewPager + Fragment 替换 TabActivity
    蓝绿简约可重复使用的简约Tab选项卡
    黑色漂亮的DIV+CSS导航菜单代码
    JavaScript+Css打造三种简洁的Tab网页选项卡
    来自中国站长站的导航菜单代码【强烈推荐】
    蓝紫色背景的漂亮CSS菜单代码
    仿Vista风格按钮菜单代码(纯CSS打造)
    仿Vista金属感导航菜单代码
    精致纯CSS打造绿色漂亮导航栏
  • 原文地址:https://www.cnblogs.com/rosiness/p/14175942.html
Copyright © 2011-2022 走看看