1. 轉換流的簡化寫法:java
因爲咱們常見的操做都是使用本地默認編碼,因此,不用指定編碼。
而轉換流的名稱有點長,因此,Java就提供了其子類供咱們使用:FileReader / FileWriter
OutputStreamWriter = FileOutputStream + 編碼表(GBK)
FileWriter = FileOutputStream + 編碼表(GBK)
InputStreamReader = FileInputStream + 編碼表(GBK)
FileReader = FileInputStream + 編碼表(GBK)
2. FileReader / FileWriter二者的構造方法:數組
(1)FileReader的構造方法app
構造方法摘要 | |
---|---|
FileReader(File file) 在給定從中讀取數據的 File 的狀況下建立一個新 FileReader。 |
|
FileReader(FileDescriptor fd) 在給定從中讀取數據的 FileDescriptor 的狀況下建立一個新 FileReader。 |
|
FileReader(String fileName) 在給定從中讀取數據的文件名的狀況下建立一個新 FileReader。 |
(2)FileWriter的構造方法編碼
構造方法摘要 | |
---|---|
FileWriter(File file) 根據給定的 File 對象構造一個 FileWriter 對象。 |
|
FileWriter(File file, boolean append) 根據給定的 File 對象構造一個 FileWriter 對象。 |
|
FileWriter(FileDescriptor fd) 構造與某個文件描述符相關聯的 FileWriter 對象。 |
|
FileWriter(String fileName) 根據給定的文件名構造一個 FileWriter 對象。 |
|
FileWriter(String fileName, boolean append) 根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象。 |
3. 需求:把當前項目目錄下的a.txt內容複製到當前項目目錄下的b.txt中
數據源:
a.txt -- 讀取數據 -- 字符轉換流 -- InputStreamReader -- FileReader
目的地:
b.txt -- 寫出數據 -- 字符轉換流 -- OutputStreamWriter -- FileWriterspa
4. 代碼示例:code
1 package cn.itcast_04; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 7 /* 8 * 需求:把當前項目目錄下的a.txt內容複製到當前項目目錄下的b.txt中 9 * 10 * 數據源: 11 * a.txt -- 讀取數據 -- 字符轉換流 -- InputStreamReader -- FileReader 12 * 目的地: 13 * b.txt -- 寫出數據 -- 字符轉換流 -- OutputStreamWriter -- FileWriter 14 */ 15 public class CopyFileDemo2 { 16 public static void main(String[] args) throws IOException { 17 // 封裝數據源 18 FileReader fr = new FileReader("a.txt"); 19 // 封裝目的地 20 FileWriter fw = new FileWriter("b.txt"); 21 22 // 一次一個字符 23 // int ch = 0; 24 // while ((ch = fr.read()) != -1) { 25 // fw.write(ch); 26 // } 27 28 // 一次一個字符數組 29 char[] chs = new char[1024]; 30 int len = 0; 31 while ((len = fr.read(chs)) != -1) { 32 fw.write(chs, 0, len); 33 fw.flush(); 34 } 35 36 // 釋放資源 37 fw.close(); 38 fr.close(); 39 } 40 }
運行結果,以下:對象