使用Java操作記事本
最初Java是不支援對文字檔的處理的,為了彌補這個缺憾而引入了Reader和Writer兩個類,這兩個類都是抽象類別,Writer中write (char[] ch,int off,int length),flush()和close()方法為抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。
當我們讀寫文字檔的時候,採用Reader是非常方便的,比如FileReader,InputStreamReader和 BufferedReader。其中最重要的類是InputStreamReader,它是位元組轉換為字元的橋樑。你可以在構造器重指定編碼的方式,如果
不指定的話將採用底層作業系統的預設編碼方式,例如GBK等。當使用FileReader讀取檔案如下代碼:
FileReader fr = new FileReader("C://tjcyjd.txt");
int ch = 0;
while((ch = fr.read())!=-1 ) {
System.out.print((char)ch);
}
其中read()方法返回的是讀取得下個字元。當然你也可以使用read(char[] ch,int off,int length)這和處理二進位檔案的時候類似,不多說了。如果使用InputStreamReader來讀取檔案,代碼如下:
while((ch
= isr.read())!=-1){
System.out.print((char)ch);
}
這和FileReader並沒有什麼區別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。read()方 法是比較耗費時間的,如果為了提高效率我們可以使用BufferedReader對Reader進行封裝,這樣可以提高讀取得速度,我們可以一行一行的讀 取文本,使用readLine()方法,代碼如下:
BufferedReader
br =
new BufferedReader(new InputStreamReader
(new FileInputStream("F://tjcyjd.txt")));
String data = null;
while((data = br.readLine())!=null){
System.out.println(data);
}
當你明白了如何用Reader來讀取文字檔的時候那麼用Writer寫檔案同樣非常簡單。有一點需要注意,當你寫檔案的時候,為了提高效率,寫入的資料會先放入緩衝區,然後寫入檔案。因此有時候你需要主動調用flush()方法。與上面對應的寫檔案的方法為:
FileWriter
fw = new FileWriter("F://tjcyjd.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new
OutputStreamWriter(new FileOutputStream
("tjcyjd2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter
(new OutputStreamWriter(new FileOutputStream
("tjcyjd3.txt")),true);
pw.println(s);
最後不要忘記用完後關閉流!下面把一些代碼貼出來,希望用到的時候能有個參照。
package test;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;public class TestFile{public static void main(String[] args) throws IOException {FileReader fr = new FileReader("F://tjcyjd.txt");// 內容為:Love lives,Love java!愛生活,愛java!int ch = 0;while ((ch = fr.read()) != -1) {System.out.print((char) ch);}InputStreamReader isr = new InputStreamReader(new FileInputStream("F://tjcyjd.txt"));while ((ch = isr.read()) != -1) {System.out.print((char) ch);}BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F://tjcyjd.txt")));String data = null;while ((data = br.readLine()) != null) {System.out.println(data);}FileWriter fw = new FileWriter("F://tjcyjd1.txt");String s = "Love lives, Love java!愛生活,愛java!";fw.write(s, 0, s.length());fw.flush();OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("F://tjcyjd2.txt"));osw.write(s, 0, s.length());osw.flush();PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("F://tjcyjd3.txt")), true);pw.println(s);fr.close();isr.close();br.close();fw.close();osw.close();pw.close();}}