package xuexi.文件操作.转换编码;

import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //gbk.txt ->gbk解码 ->字符串 ->utf8编码 ->utf8.txt

        //1
        //将字节输入流,以gbk解码成字符流,在传入字符串
        InputStreamReader isr = new InputStreamReader(new FileInputStream("D:/myjava/aa/gbk.txt"),"gbk");
        //包装字节输出流 成 utf-8字符输出流
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:/myjava/aa/utf8.txt"),"utf-8");
        try(BufferedReader reader = new BufferedReader(isr);
            BufferedWriter writer = new BufferedWriter(osw)){

            String line;//接收字符串
            while((line = reader.readLine()) != null){
                System.out.println(line);

                writer.write(line);
                writer.newLine();
            }


        }

        //2
        //将字节输入流,以gbk解码成字符流,在传入字符串
        InputStreamReader isr1 = new InputStreamReader(new FileInputStream("D:/myjava/aa/gbk1.txt"),"gbk");
        //不包装字节输出流,直接输出时确定编码
        FileOutputStream osw1 = new FileOutputStream("D:/myjava/aa/utf81.txt");
        try(BufferedReader reader1 = new BufferedReader(isr1);
            BufferedOutputStream writer1 = new BufferedOutputStream(osw1)){

            String line1;//接收字符串
            while((line1 = reader1.readLine()) != null){
                System.out.println(line1);

                writer1.write(line1.getBytes("utf-8"));
                System.out.println();
            }
        }

        //3
        //将字节输入流,以gbk解码成字符流,在传入字符串
        InputStreamReader isr2 = new InputStreamReader(new FileInputStream("D:/myjava/aa/gbk2.txt"),"gbk");
        //包装字节输出流 成 utf-8字符输出流
        OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("D:/myjava/aa/utf82.txt"),"utf-8");
        try(BufferedReader reader = new BufferedReader(isr2);
            BufferedWriter writer = new BufferedWriter(osw2)){

            char[] chars = new char[1204];
            int len;
            while((len = reader.read(chars)) !=-1){
                writer.write(chars,0,len);
            }
        }




    }
}