Java IO之转换流的使用

2021-04-05  本文已影响0人  程序员汪汪

简介

InputStreamReader

InputStreamReader将一个字节的输入流转换为字符的输入流,解码:字节、字节数组 --->字符数组、字符串。

构造器:

OutputStreamWriter

OutputStreamWriter将一个字符的输出流转换为字节的输出流,编码:字符数组、字符串 ---> 字节、字节数组。

构造器:

图示:

代码示例

/**
综合使用InputStreamReader和OutputStreamWriter
     */
public class IsrAndOswTest {

    @Test
    public void test() {

        InputStreamReader isr = null;
        OutputStreamWriter osw = null;
        try {
            //1.造文件、造流
            File file1 = new File("D:\\io\\hello.txt");
            File file2 = new File("D:\\io\\hello_gbk.txt");

            FileInputStream fis = new FileInputStream(file1);
            FileOutputStream fos = new FileOutputStream(file2);

            isr = new InputStreamReader(fis, "utf-8");
            osw = new OutputStreamWriter(fos, "gbk"); 
            //2.读写过程
            char[] cbuf = new char[1024];
            int len;
            while ((len = isr.read(cbuf)) != -1) {
                osw.write(cbuf, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 3.关闭资源
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (osw != null) {
                try {
                    osw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

说明:文件编码的方式(比如:GBK),决定了解析时使用的字符集(也只能是GBK)。

编码集

常见的编码表

说明:

UTF-8变长编码表示

编码应用

使用要求:

客户端/浏览器端 <----> 后台(javaGOPythonNode.jsphp) <----> 数据库。

要求前前后后使用的字符集都要统一:UTF-8

上一篇下一篇

猜你喜欢

热点阅读