Java学习笔记39(转换流)

2018-06-18 03:50:49来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

转换流:字符流和字节流之间的桥梁

用于处理程序的编码问题

 

OutputStreamWriter类:字符转字节流

写文本文件:

package demo;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Demo {
    public static void main(String[] args) throws IOException {
        writeGBK();
        writeUTF8();
    }

    public static void writeGBK() throws IOException {
        FileOutputStream fos = new FileOutputStream("d:\\gbk.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
        osw.write("你好");// gbk的一个汉字是2个字节
        osw.close();
    }

    public static void writeUTF8() throws IOException {
        FileOutputStream fos = new FileOutputStream("d:\\utf8.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
        osw.write("你好");// utf8的一个汉字是3个字节
        osw.close();
    }
}

 

InputStreamReader类:

字节转字符流过程:

这里读取上面写的文本文件:

package demo;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo {
    public static void main(String[] args) throws IOException {
        readGBK();
        readUTF8();
    }

    public static void readGBK() throws IOException {
        FileInputStream fis = new FileInputStream("d:\\gbk.txt");
        InputStreamReader isr = new InputStreamReader(fis);
        char[] ch = new char[1024];
        int len = isr.read(ch);
        System.out.println(new String(ch, 0, len));
    }

    public static void readUTF8() throws IOException {
        FileInputStream fis = new FileInputStream("d:\\utf8.txt");
        InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        char[] ch = new char[1024];
        int len = isr.read(ch);
        System.out.println(new String(ch, 0, len));
    }
}

 

这里注意,如果编码集和读取问文本不一致,就会发生乱码或者输出?的问题

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java基础操作面试题:Map集合排序 需要TreeMap 构造方法参数有比

下一篇:Redis的key过期处理策略