天天看點

InputStreamReader+OutputStreamWriter+FileReader+FileWriter

InputStreamReader+OutputStreamWriter+FileReader+FileWriter

1、字元輸入流 InputStreamReader+ 字元輸出流 OutputStreamWriter

 * 需求:把目前項目目錄下的a.txt内容複制到目前項目目錄下的b.txt中

 * 資料源:

 *         a.txt -- 讀取資料 -- 字元轉換流 -- InputStreamReader

 * 目的地:

 *         b.txt -- 寫出資料 -- 字元轉換流 -- OutputStreamWriter

package cn.itcast_04;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/*
 * 需求:把目前項目目錄下的a.txt内容複制到目前項目目錄下的b.txt中
 * 
 * 資料源:
 * 		a.txt -- 讀取資料 -- 字元轉換流 -- InputStreamReader
 * 目的地:
 * 		b.txt -- 寫出資料 -- 字元轉換流 -- OutputStreamWriter
 */
public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
		// 封裝資料源
		InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));
		// 封裝目的地
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"));

		// 讀寫資料
		// 方式1
		// int ch = 0;
		// while ((ch = isr.read()) != -1) {
		// osw.write(ch);
		// }

		// 方式2
		char[] chs = new char[1024];
		int len = 0;
		while ((len = isr.read(chs)) != -1) {
			osw.write(chs, 0, len);
			osw.flush();
		}

		// 釋放資源
		osw.close();
		isr.close();
	}
}
           

2、字元輸入流 FileReader + 字元輸出流 FileWriter

 * 由于我們常見的操作都是使用本地預設編碼,是以,不用指定編碼。

 * 而轉換流的名稱有點長,是以,Java就提供了其子類供我們使用。

 * OutputStreamWriter = FileOutputStream + 編碼表(GBK)

 * FileWriter = FileOutputStream + 編碼表(GBK)

 *

 * InputStreamReader = FileInputStream + 編碼表(GBK)

 * FileReader = FileInputStream + 編碼表(GBK)

 *

 /*

 * 需求:把目前項目目錄下的a.txt内容複制到目前項目目錄下的b.txt中

 * 資料源:

 *         a.txt -- 讀取資料 -- 字元轉換流 -- InputStreamReader -- FileReader

 * 目的地:

 *         b.txt -- 寫出資料 -- 字元轉換流 -- OutputStreamWriter -- FileWriter

package cn.itcast_04;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 由于我們常見的操作都是使用本地預設編碼,是以,不用指定編碼。
 * 而轉換流的名稱有點長,是以,Java就提供了其子類供我們使用。
 * OutputStreamWriter = FileOutputStream + 編碼表(GBK)
 * FileWriter = FileOutputStream + 編碼表(GBK)
 * InputStreamReader = FileInputStream + 編碼表(GBK)
 * FileReader = FileInputStream + 編碼表(GBK)
 /*
 * 需求:把目前項目目錄下的a.txt内容複制到目前項目目錄下的b.txt中
 * 資料源:
 * 		a.txt -- 讀取資料 -- 字元轉換流 -- InputStreamReader -- FileReader
 * 目的地:
 * 		b.txt -- 寫出資料 -- 字元轉換流 -- OutputStreamWriter -- FileWriter
 */
public class CopyFileDemo2 {
	public static void main(String[] args) throws IOException {
		// 封裝資料源
		FileReader fr = new FileReader("a.txt");
		// 封裝目的地
		FileWriter fw = new FileWriter("b.txt");

		// 一次一個字元
		// int ch = 0;
		// while ((ch = fr.read()) != -1) {
		// fw.write(ch);
		// }

		// 一次一個字元數組
		char[] chs = new char[1024];
		int len = 0;
		while ((len = fr.read(chs)) != -1) {
			fw.write(chs, 0, len);
			fw.flush();
		}

		// 釋放資源
		fw.close();
		fr.close();
	}
}
           

繼續閱讀