JAVA io流笔记06 转换流

package FileText;

//InputStreamReader类包含了一个底层输入流,可以从中读取原始字节。它根据指定的编码方式,
//将这些字节转换为Unicode字符。

//OutputStreamWriter从运行的程序中接收Unicode字符,然后使用指定的编码方式将这些字符转换为字节,
//再将这些字节写入底层输出流中

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

//转换流:字节流转为字符流(处理编码:字符->解码字符集->二进制,解码)

public class TurnStream06 {
    
public static void main(String args[]){
    turn();
}

public static void turn(){
    String str = "白鹤";
    byte byt[] = str.getBytes();
    System.out.println(new String(byt));
    
    try {
        byte[] byt2 = "中国".getBytes("GB2312");
        System.out.println(new String(byt2,"utf-8"));  //编码解码不同则出现乱码
        
        System.out.println(new String(byt2,"GB2312"));//相同时正常输出
    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();
    }
    
    try {
        File file = new File("D:/Text/dd/BufText3.txt");
        File file2 = new File("D:/Text/dd/BufText4.txt");

        BufferedReader changgeread = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(file),"utf-8"));
        
        BufferedWriter changewrite = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(file2),"utf-8"));
        
        int len=2048;
        char [] cha2 = new char[2048];
        
        if(-1!=(len=(changgeread.read(cha2)))){
            changewrite.write(cha2, 0, len);
            changewrite.flush();
            changewrite.close();
            changgeread.close();
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }
    
}
}
 

猜你喜欢

转载自blog.csdn.net/qq_40302611/article/details/85204629