国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用Java操作文本文件

2019-11-18 14:53:05
字體:
來源:轉載
供稿:網友

    使用java操作二進制文件一文中講述了如何使用Java處理二進制的文件,這篇文章主要講述如何使用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("ming.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("ming.txt")));
  String data = null;
  while((data = br.readLine())!=null)
  {
   System.out.println(data); 
  }
當你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點需要注重,當你寫文件的時候,為了提高效率,寫入的數據會先放入緩沖區,然后寫入文件。因此有時候你需要主動調用flush()方法。與上面對應的寫文件的方法為
FileWriter fw = new FileWriter("hello.txt");
  String s = "hello world";
  fw.write(s,0,s.length());
  fw.flush();
  
  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
  osw.write(s,0,s.length());
  osw.flush();
  
  PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
  pw.println(s);
不要忘記用完后關閉流!下面是個小例子,幫助新手理解。其實有的時候java的IO系統是需要我們多記記的,不然哪天就生疏了。測試文件的內容為
ming.txt
歡迎光臨J2ME開發網12345

hello world i like java language
import java.io.*;


public class TestFile2
{
 public static void main(String[] args) throws IOException
 {
  FileReader fr = new FileReader("ming.txt");
  char[] buffer = new char[1024];
  int ch = 0;
  while((ch = fr.read())!=-1 )
  {
   System.out.print((char)ch); 
  }
  
  InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
  while((ch = isr.read())!=-1)
  {
   System.out.print((char)ch); 
  } 
  
  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
  String data = null;
  while((data = br.readLine())!=null)
  {
   System.out.println(data); 
  }
  
  FileWriter fw = new FileWriter("hello.txt");
  String s = "hello world";
  fw.write(s,0,s.length());
  fw.flush();
  
  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
  osw.write(s,0,s.length());
  osw.flush();
  
  PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
  pw.println(s);
  
  fr.close();
  isr.close();
  br.close();
  fw.close();
  osw.close();
  pw.close();
 } 
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泽州县| 于都县| 新余市| 皮山县| 永昌县| 基隆市| 旅游| 浦北县| 牙克石市| 紫金县| 吉林省| 麦盖提县| 鄂温| 濮阳市| 安新县| 秭归县| 红河县| 石柱| 磴口县| 搜索| 和硕县| 花莲市| 东港市| 金秀| 黔西县| 徐汇区| 育儿| 商丘市| 梅河口市| 讷河市| 景谷| 苍山县| 佛教| 静乐县| 英吉沙县| 大荔县| 精河县| 汾阳市| 马鞍山市| 普兰店市| 泾川县|