一、转换流概述 点击此处返回总目录 二、OutputStreamWriter 转换流 三、InputStreamReader 转换流 四、转换流子类父类的区别 一、转换流概述 中文版操作系统,编码都是GBK的。上一节中最后已经提到了,有的时候文本文件不一定是GBK的。(安装中文版的操作系统是,默认编码是GBK的)。unicode、utf-8等也可以存储中文,在不同的编码表里面,中文的表示含义不同。所以有时候存在编码问题。 不同的编码表,同一个汉字对应的编码是不一样的。比如: GBK编码中,一个汉字对应2个字节,比如"刘"对应的编码为"-63 -11"。但是在utf-8编码中,一个汉字占3个字节,同样是"刘"对应的编码可能是"-17 -69 -65"。 我们存到文件中的都是字节。 比如我们想通过java程序把"刘"写到文件中,如果要求用GBK写,也就是说要在文件中写入"-63 -11"。这可以使用可以直接使用FileWriter来写入字符,因为默认编码就是GBK的。【例】 如果要求用utf-8写,也就是要在文件中写入"-17 -69 -65 ",怎么办呢?FileWriter不能控制编码表。这就需要用到字符转换流。首先通过字符转换流将汉字转成相应编码表对应的字节,然后调用字节输入流将字节写入文件。 之前学习的FileReader和FileWriter只能采用默认编码表,而不能指定编码。所以今天介绍转换流,可以对编码表进行操作。可以指定Unicode,也可以指定utf-8,这对以后的开发很有用,尤其是互联网程序。 例:使用FileWriter写入汉字,存进文件中的就是汉字在GBK中对应的字节。
使用FileWriter写入汉字,存进文件中的就是汉字在GBK中对应的字节。 二、OutputStreamWriter 转换流 字符转字节的转换流。 java.io.Object java.io.Writer //字符输出流 java.io.OutputStreamWriter //转换流,可以指定编码表。 java.io.FileWriter //字符输出流,不能指定编码表。 构造方法: 1. OutputStreamWriter(OutputStream out) //参数是字节输出流。不写码表,则表示采用默认码表。 2. OutputStreamWriter(OutputStream out, String charsetName) //charsetName是编码表名字。目前能写的有GBK、UTF-8 方法: 转换流OutputStreamWriter是java.io.Writer的子类。是一个字符输出流,用于写文本文件。所以有父类的write()方法。 使用:
执行过程:首先转换流查找编码表,将字符对应的字节查找出来,然后将字节交给字节输入流写入文件。 FileWriter类是OutputStreamWriter的子类,做的更简单一些,但是不能更改编码表。平时还是FileWriter用的比较多一些。 三、InputStreamReader 转换流 字节转字符的转换流。 java.io.Object java.io.Reader //字符输入流 java.io.InputStreamReader //转换流,可以指定编码表。 java.io.FileReader //字符输出流,不能指定编码表。 构造方法: 1. InputStreamReader(InputStream in) //参数是字节输入流。不写码表,则表示采用默认码表。 2. InputStreamReader(InputStream in, String charsetName) //charsetName是编码表名字。目前能写的有GBK、UTF-8 方法: 转换流InputStreamReader是java.io.Reader的子类。是一个字符输入流,用于读文本文件。所以有父类的read()方法。 使用:
执行过程:首先字节输出流将字节读出来交给转换流,然后转化流查找对应的编码表将对应的字符输出。 四、转换流子类父类的区别 java.io.Object java.io.Writer //字符输出流 java.io.OutputStreamWriter //转换流,可以指定编码表。 java.io.FileWriter //字符输出流,不能指定编码表。 OutputStreamWriter 和FileWriter都属于字符输出流。 OutputStreamWriter、InputStreamReader是字符转字节的桥梁,也称之为字符转换流。因为可以指定编码表。 而子类,FileWriter、FileReader不能指定编码表,方便了我们的操作。 用的时候,如果想改变或指定编码时,就得需要用到转换流。 如果使用默认编码表,就可以使用子类。 |
IO(6)----转换流(OutputStreamWriter)
版权声明:未经同意,严禁转载 https://blog.csdn.net/pengchengliu/article/details/82915423
猜你喜欢
转载自blog.csdn.net/pengchengliu/article/details/82915423
今日推荐
周排行