1. 程式人生 > >Java IO 轉換流的編碼解碼

Java IO 轉換流的編碼解碼

package io.transstream.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

import javax.print.attribute.standard.OutputDeviceAssigned;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;

public class TransStreamDemo3 {

	public static void main(String[] args) throws IOException {
		readText_2();
	}



	private static void readText_2() throws IOException {
		InputStreamReader isr=new InputStreamReader(new FileInputStream("gbk.txt"),"UtF-8");
		char []buf=new char[10];
		int len=isr.read(buf);
		String str=new String(buf, 0, len);
				System.out.println(str);
				isr.close();
	}



	private static void readText_1() throws IOException {
		FileReader fr=new FileReader("u8_1.txt");
		char []buf=new char[10];
		int len=fr.read(buf);
		String str=new String(buf, 0, len);
				System.out.println(str);
				fr.close();
	}



	private static void writeText_3() throws IOException {
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("u8_1.txt"),"utf-8");
		osw.write("你好");
		osw.close();
	}
	



	private static void writeText_2() throws IOException {
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("gbk_2.txt"));
		OutputStreamWriter osw2=new OutputStreamWriter(new FileOutputStream("gbk_2.txt"),"gbk");
		/*
		 * 這兩句程式碼的功能是等同的
		 * FileWriter:其實就是轉換流指定了本機預設碼錶的體現 而且這個轉換流的子類物件 可以方便操作文字檔案
		 *			簡單說:操作檔案的位元組流+本機預設的編碼表
		 *			這是按照預設碼錶來操作檔案的便捷類
		 *如果操作文字檔案需要明確 具體的編碼 FileWriter就不行了 必須用轉換流 
		 *
		 */
		osw.write("你好");
		osw.close();
	}



	private static void writeText_1() throws IOException {
		FileWriter fw=new FileWriter("gbk.txt");
		
		fw.write("你好");
		fw.close();
	}

}