package com.shuhuadream.inputstream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
//轉換流
/**
* 輸入位元組流的轉換流
* InputStreamReader
*
* 輸出位元組流的轉換流
* OutputStreamWriter
*
*
* 轉換流的作用:
* 1.如果目前所擷取到的一個位元組流需要轉換為字元流使用,這時就可以使用轉換流。
* 2.使用轉換流可以指定編碼表進行讀寫檔案
* */
public class Demo01 {
public static void main(String[] args) throws IOException {
//isr();
//osw();
//writeTest();
readTest();
}
//使用輸入位元組流的轉換流指定碼表進行讀取檔案資料
public static void readTest() throws IOException{
File file = new File("d:\\demo\\a.txt");
FileInputStream fis = new FileInputStream(file);
//建立位元組流的轉換流并且指定碼表進行讀取
InputStreamReader isr = new InputStreamReader(fis);
char[] buf = new char[1024];
int length = 0;
while((length = isr.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}
}
//使用輸出位元組流的轉換流指定碼表寫出資料
public static void writeTest() throws IOException{
File file = new File("d:\\demo\\a.txt");
//建立資料的輸出通道
FileOutputStream fos = new FileOutputStream(file);
//把輸出位元組流轉換為字元流并且指定碼表
OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
osw.write("新中國好");
osw.close();
}
public static void osw(){
File file = new File("d:\\demo\\a.txt");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
//把輸出位元組流轉換為輸出字元流
OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");
osw.write("大家好");
osw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void isr(){
InputStream in = System.in;//擷取标準輸入流
InputStreamReader isr = new InputStreamReader(in);
//使用字元流的緩沖類
BufferedReader br = new BufferedReader(isr);
String line = null;
try {
while((line = br.readLine())!=null){
System.out.println("内容是:"+line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}