Loading

用指定的码表读写字符

有时候读和写的字符编码不一致,如果采用默认码表进行读取,就会出现乱码,这时就需要用字符流InputStreamReader和OutputStreamWriter来指定码表读写字符。InputStreamReader和OutputStreamWriter值字节流通向字符流的桥梁,即字节流通过指定的编码表转换为字符流。

public class Demo7_transIO {

    public static void main(String[] args) throws IOException {
        // demo1();
        // 更高效的读与写
        BufferedReader br = new BufferedReader(new InputStreamReader(
                new FileInputStream("gbk.txt"), "gbk"));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream("utf-8.txt"),"utf-8"));

        int c;
        while((c = br.read()) != -1)
            bw.write(c);
        br.close();
        bw.close();
    }

    public static void demo1() throws UnsupportedEncodingException, FileNotFoundException, IOException {
        // 指定码表读写字符
        InputStreamReader isr = new InputStreamReader(new FileInputStream("gbk.txt"), "gbk");
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("utf-8.txt"),"utf-8");

        int b;
        while((b = isr.read()) != -1)
            osw.write(b);
        isr.close();
        osw.close();
    }

}
posted @ 2017-02-23 22:40  leon_x  阅读(29)  评论(0)    收藏  举报