JAVA學習筆記(三十三)- 位元組流轉換為字元流,java學習筆記
將位元組流轉換為字元流
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;/* * InputStreamReader和OutputStreamWriter類 * 用來將位元組流轉換為字元流 * * 註:Java中沒有提供將字元流轉換為位元組流的方法 */public class Test04 { public static void main(String[] args) throws IOException { test2(); } // 將檔案位元組輸入資料流轉換為字元流 public static void test1() throws IOException { // 定義檔案位元組輸入資料流 InputStream is = new FileInputStream("D:\\Java\\hello.txt"); // 將其轉換為字元流 InputStreamReader isr = new InputStreamReader(is); int data; while ((data = isr.read()) != -1) { System.out.println((char) data); } isr.close(); is.close(); } // 將檔案位元組輸出資料流轉換字元流 public static void test2() throws IOException { // 定義檔案位元組輸出資料流 OutputStream os = new FileOutputStream("D:\\Java\\hello.txt"); // 將其轉換為字元流,指定寫入時使用的編碼 OutputStreamWriter osw = new OutputStreamWriter(os, "gbk"); //將標準位元組輸入資料流轉換為字元流,指定讀取時使用的編碼 InputStreamReader isr = new InputStreamReader(System.in, "gbk"); int data; System.out.println("請輸入資料:"); while((data=isr.read())!='q'){ osw.write(data); osw.flush(); } isr.close(); os.close(); }}
為字元輸入輸出資料流添加緩衝
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;/* * BufferedReader和BufferedWriter緩衝流 * 為字元輸入輸出資料流添加緩衝 */public class Test05 { public static void main(String[] args) throws IOException { test2(); } // 為字元輸入資料流添加緩衝 public static void test1() throws IOException { // 將標準位元組輸入資料流轉換為字元流 InputStreamReader isr = new InputStreamReader(System.in, "gbk"); // 為字元輸入資料流添加緩衝 BufferedReader br = new BufferedReader(isr); System.out.println("請輸入資料:"); String str = null; while ((str = br.readLine()) != null) { System.out.println(str); } br.close(); isr.close(); } // 使用緩衝流複製檔案 public static void test2() throws IOException { // 定義一個檔案字元輸入資料流 FileReader fr = new FileReader("D:\\Java\\hello.txt"); // 為輸入資料流添加緩衝 BufferedReader br = new BufferedReader(fr); // 定義一個檔案字元輸出資料流 FileWriter fw = new FileWriter("D:\\Java\\world.txt"); // 為輸出資料流添加緩衝 BufferedWriter bw = new BufferedWriter(fw); String str = null; while ((str = br.readLine()) != null) { bw.write(str); } bw.flush(); System.out.println("檔案複製成功!"); bw.close(); br.close(); }}