【IO编程】7.转换流

2021/7/21 14:35:43

本文主要是介绍【IO编程】7.转换流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

FileReader类读取文本文件默认是按照utf-8编码读取,若文本文件不是utf-8编码则会出现中文乱码情况。转换流可以解决中文乱码问题。

  • 介绍
    1. InputStreamReader: Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)。
    2. OutputStreamWriter: Writer的子类,可以将OutputStream(字节流)包装成Writer(字符流)。
    3. 处理纯文本数据时,使用字符流效率更高,并且可以指定编码格式(utf-8、gbk、gb2312、ISO8859-1等)解决中文乱码问题。

案例:将字节流FileInputStream包装成字符流InputStreamReader,对文件按照gbk编码进行读取,进而再包装成BufferedReader。代码如下:

@Test
public void readFile() {
    BufferedReader br = null;
    String line;
    try {
        br = new BufferedReader(new InputStreamReader(new FileInputStream("e:\\test.txt"), "gbk"));
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

案例:将字节流FileOutputStream包装成字符流OutputStreamWriter,对文件按照gbk编码进行写入,进而再包装成BufferedWriter。代码如下:

@Test
public void writeFile() {
    BufferedWriter bw = null;
    try {
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\test.txt")));
        bw.write("hello world");
        bw.newLine();
        bw.write("hello java");
        bw.newLine();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (bw != null) {
            try {
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


这篇关于【IO编程】7.转换流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程