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