zoukankan      html  css  js  c++  java
  • IO流之转换流

    一  转换流

    1 OutputStreamWriter类

    是字符流通向字节流的桥梁:

    可使用指定的字符编码表,将要写入流中的字符编码成字节。它的作用的就是,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。

        public static void main(String[] args) throws IOException {
            //指定目的地
            FileOutputStream fos=new FileOutputStream("E:\java\UTF-8.txt",true);
            //创建转换流
            OutputStreamWriter osw=new OutputStreamWriter(fos, "utf-8");
            osw.write("你好,小猪佩奇");
            osw.flush();
            //释放资源(你自己new了谁,就关谁,先开的后关)
    
            osw.close();
            fos.close();
        }

    2 InputStreamReader类

    是字节流通向字符流的桥梁:

    它使用指定的字符编码表读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

        public static void main(String[] args) throws IOException {
            //获取数据源
            FileInputStream fis=new FileInputStream("E:\java\UTF-8.txt");
            //创建转换流
            InputStreamReader isr=new InputStreamReader(fis,"utf-8");
            //开始读取
            int len=0;
            while((len=isr.read())!=-1){
                System.out.println((char)len);
            }
            //释放资源
            isr.close();
            fis.close();
        }

    注意:在读取指定的编码的文件时,一定要指定编码格式,否则就会发生解码错误,而发生乱码现象。

    3. 转换流和子类的区别

    发现有如下继承关系:

    OutputStreamWriter:

                       |--FileWriter:

    InputStreamReader:

                     |--FileReader;

    一旦要指定其他编码时,绝对不能用子类,必须使用字符转换流。什么时候用子类呢?

    条件:

    1、操作的是文件。2、使用默认编码。

    总结:

    字节--->字符 : 看不懂的--->看的懂的。  需要读。输入流。 InputStreamReader

    字符--->字节 : 看的懂的--->看不懂的。  需要写。输出流。 OutputStreamWriter

  • 相关阅读:
    C#中IPAddress转换成整型int
    没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
    VB.NET或C#报错:You must hava a license to use this ActiveX control.
    c#几种随机数组和数组乱序
    C#封装的websocket协议类
    VB生成条形码(EAN-13)
    VB控件间的拖放
    VB用API模拟截屏键PrintScreen
    VB读写进程的内存
    几个VB常见又内涵的错误
  • 原文地址:https://www.cnblogs.com/zzq123/p/10222154.html
Copyright © 2011-2022 走看看