上一篇我們利用FileInputStream跟FileOutputStream來進行文件操作。FileInputStream跟FileOutputStream最大的問題是它以byte(8-bit)來輸入輸出,所以不適合處理16-bit的unicode,如中文字。為了解決這個問題,我們需要引入:FileReader 與 FileWriter。
FileInputStream跟FileOutputStream這種以byte來處理文件的,在Java裡稱為:Byte streams;而FileReader與FileWriter這種以兩個bytes(16-bit)來讀寫的,稱為:Character streams。在Character streams裡每次讀取或寫入都是兩個bytes。
上一篇的例子改為FileReader與FileWriter的版本:
import java.io.*;
public class CopyFile {
public static void main(String args[]) throws IOException
{
FileReader in = null;
FileWriter out = null;
try {
in = new FileReader("input.txt");
out = new FileWriter("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
同樣的,測試這個例子前,先要在程式目錄建立一個"input.txt"的文件,裡面可隨意輸入一些文字。程式會新建一個"output.txt",並將"input.txt"裡面的內容全部複製過去。