Java讀寫文本文件

Java IO系統裏讀寫文件使用Reader和Writer兩個抽象類,Reader中read()和close()方法都是抽象方法。Writer中 write(),flush()和close()方法爲抽象方法。子類應該分別實現他們。

Java IO已經爲我們提供了三個方便的Reader的實現類,FileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader, 它是字節轉換爲字符的橋樑。你可以在構造器重指定編碼的方式,如果不指定的話將採用底層操作系統的默認編碼方式,例如GBK等。

FileReader讀txt文件例子

Java代碼  收藏代碼
  1. FileReader fr = new FileReader("D:/Test.txt");  
  2. int ch = 0;    
  3. while((ch = fr.read())!=-1 ){    
  4.     System.out.print( (char)ch);    
  5. }     

 其中read()方法返回的是讀取得下個字符。

InputStreamReader讀txt文件例子

Java代碼  收藏代碼
  1. InputStream is = new FileInputStream(new File("D:/Test.txt"));  
  2.         InputStreamReader fr = new InputStreamReader(is);  
  3.         int ch = 0;    
  4.         while((ch = fr.read())!=-1 ){    
  5.             System.out.print((char)ch);    
  6.         }    

 這和FileReader並沒有什麼區別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。 read()方法是比較好費時間的,如果爲了提高效率,我們可以使用BufferedReader對Reader進行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用 readLine()方法。

Java代碼  收藏代碼
  1. BufferedReader br = new BufferedReader(new FileReader("Test.txt")));  
  2. String data = br.readLine();//一次讀入一行,直到讀入null爲文件結束  
  3. while( data!=null){  
  4.       System.out.println(data);  
  5.       data = br.readLine(); //接着讀下一行  
  6. }  
 
當你明白瞭如何用Reader來讀取文本文件的時候那麼用Writer寫文件同樣非常簡單。有一點需要注意,當你寫文件的時候,爲了提高效率,寫入的數據會先放入緩衝區,然後寫入文件。因此有時候你需要主動調用flush()方法。

有讀就有寫,寫文本文件可以使用PrintWriter,FileWriter,BufferedWriter。
Java代碼  收藏代碼
  1. FileWriter fw = new FileWriter("D:/Test.txt");    
  2.         String s = "hello world";    
  3.         fw.write(s,0,s.length());    
  4.         fw.flush();    
  5.           
  6.         OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:/Test1.txt"));    
  7.         osw.write(s,0,s.length());    
  8.         osw.flush();    
  9.           
  10.         PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:/Test2.txt")),true);    
  11.         pw.println(s);    
  12.           
  13.         fw.close();    
  14.         osw.close();    
  15.         pw.close();    
 如果想接着寫入某個文件。 聲明時FileWriter fw = new FileWriter("log.txt",true);加個true就可以了。
在寫個利用BufferedWriter例子,
Java代碼  收藏代碼
  1.               File file = new File("D:/Test.txt");  
  2. File dest = new File("D:/new.txt");  
  3. try {  
  4.     BufferedReader reader = new BufferedReader(new FileReader(file));  
  5.     BufferedWriter writer  = new BufferedWriter(new FileWriter(dest));  
  6.     String line = reader.readLine();  
  7.     while(line!=null){  
  8.         writer.write(line);  
  9.         line = reader.readLine();  
  10.     }  
  11.     writer.flush();  
  12.     reader.close();  
  13.     writer.close();  
  14. catch (FileNotFoundException e) {  
  15.     e.printStackTrace();  
  16. catch (IOException e) {  
  17.     e.printStackTrace();  
  18. }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章