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();
}
}
}