美文网首页
java 编码转换流 OutputStreamWriter In

java 编码转换流 OutputStreamWriter In

作者: Jycoding | 来源:发表于2022-07-22 13:49 被阅读0次

编码转换流

字节流:针对二进制文件

字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8

1 概述

编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题

package cn.tedu.encoding;

import java.io.*;

/*本类用于测试编码转换流*/

public class TestEncode {

    public static void main(String[] args) {

        method1();//用来测试OutputStreamWriter

        method2();//用来测试InputStreamReader

    }

    private static void method2() {

        //1.创建一个在本方法中都生效的局部变量,并给变量初始化

        InputStreamReader in = null;

        //2.由于IO操作可能会抛出异常,所以需要try-catch-finally结构

        try{

            //3.创建针对于输入流的编码转换流对象

            in = new InputStreamReader(

                    new FileInputStream("1.txt"),"utf-8");

                    //new FileInputStream("1.txt"),"gbk");

                    //new FileInputStream("1.txt"),"iso-8859-1");

            //4.使用流读取数据,并将读取到的信息打印在控制台

            //read方法的返回值类型是int,打印的是编码

            //UTF-8-28023    gbk-23092  iso-8859-1-230

            //System.out.println(in.read());

            //拓展:将刚刚读到的数据,以中文的格式展示在控制台

            char[] ch = new char[8192];

            //Reader中的方法:read(char[] cbuf)将字符读入数组,返回读取到的字符的个数

            int len = in.read(ch);//len保存的是读取到的字符的个数

            //此处是String的构造函数,利用ch数组中的数据,构建一个字符串,并打印到控制台

            System.out.println(new String(ch,0,len));

            System.out.println("恭喜您!成功读取!");

        }catch (Exception e){

            System.out.println("很抱歉!读取失败!");

            e.printStackTrace();

        }finally {

            //5.关流

            try {

                in.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    private static void method1() {

        //1.创建一个在本方法中都生效的局部变量,并给变量初始化

        OutputStreamWriter out = null;

        //2.由于代码可能会产生IO异常,所以需要完成try-catch-finally结构

        try{

            //3.创建流对象

            out = new OutputStreamWriter(

                    new FileOutputStream("1.txt"),"utf-8");

                    //new FileOutputStream("1.txt"),"iso-8859-1");

                    //new FileOutputStream("1.txt"),"gbk");

            //4.使用流对象写出数据

            out.write("海绵宝宝与派大星");

            System.out.println("执行成功!");

        }catch (Exception e){

            System.out.println("执行失败!");

            e.printStackTrace();

        }finally {

            //5.关流

            try {

                out.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

}

相关文章

网友评论

      本文标题:java 编码转换流 OutputStreamWriter In

      本文链接:https://www.haomeiwen.com/subject/nxrbirtx.html