15 InputStreamReader 桥连接

来源:互联网 发布:linux下如何卸载jdk1.8 编辑:程序博客网 时间:2024/05/22 03:19
/*
事先在当前目录下准备好一个test.txt 的文本文件,要求该文本文件是使用GBK 编码的
多行文本文件。如:
test.txt
窗前明月光
疑是地上霜
举头望明月
低头思故乡
利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以UTF-8 的编码方式,写
到test2.txt 文件中,例:
test2.txt
低头思故乡
举头望明月
疑是地上霜
窗前明月光

 */

import java.io.*;
import java.util.*;

public class D2 {

    static void write(String s) throws IOException {
        FileWriter fw = new FileWriter("test.txt", true);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(s);
        bw.newLine();
        bw.close();

    }

    // 转换为UTF-8存入
    static void read() throws IOException {
        // 桥转换类 OutputStreamWriter 将字节流转换为字符流
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
                "test2.txt", true), "UTF-8");// 转换成UTF-8编码
        InputStreamReader isr = new InputStreamReader(new FileInputStream(
                "test.txt"), "GBK"); // 源文件的编码为GBK
        BufferedReader br = new BufferedReader(isr);
        BufferedWriter bw = new BufferedWriter(osw);
        String str = null;
        while ((str = br.readLine()) != null) {
            bw.write(str);
            bw.newLine();

        }
        bw.close();

    }

    public static void main(String args[]) throws IOException {
        String libai = "窗前明月光 疑是地上霜 举头望明月 低头思故乡";
        String str[] = libai.split(" ");// 按空格拆分字符串
        for (int i = 0; i < str.length; i++)
            write(str[i]); // 连续写多次 此时 字节流对象需要为FileOutputStream(String
                            // path,true)
        read();

    }

}

原创粉丝点击