march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          Java IO系統(tǒng)里讀寫文件使用Reader和Writer兩個抽象類,Reader中read()和close()方法都是抽象方法。Writer中 write(),flush()和close()方法為抽象方法。子類應(yīng)該分別實現(xiàn)他們。
          Java IO已經(jīng)為我們提供了三個方便的Reader的實現(xiàn)類,F(xiàn)ileReader,InputStreamReader和BufferedReader。其中最重要的類是InputStreamReader, 它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認(rèn)編碼方式,例如GBK等。

          FileReader讀txt文件例子
          FileReader fr = new FileReader("D:\\test.txt");
          int ch = 0;  
          while((ch = fr.read())!=-1 ){  
              System.out.print( (char)ch );  
          其中read()方法返回的是讀取得下個字符。

          InputStreamReader讀txt文件例子
          InputStream is = new FileInputStream(new File("D:\\test.txt"));  
          InputStreamReader reader = new InputStreamReader(is);  
          int ch = 0;    
          while((ch = reader.read())!=-1 ){    
              System.out.print((char)ch);    
          }    
          這和FileReader并沒有什么區(qū)別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。 read()方法是比較好費(fèi)時間的,如果為了提高效率,我們可以使用BufferedReader對Reader進(jìn)行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用 readLine()方法。
          BufferedReader br = new BufferedReader(new FileReader("D:\\test.txt"));  
          String line = null;
          while((line = br.readLine()) != null){  
                System.out.println(line);  
          }  
          當(dāng)你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點(diǎn)需要注意,當(dāng)你寫文件的時候,為了提高效率,寫入的數(shù)據(jù)會先放入緩沖區(qū),然后寫入文件。因此有時候你需要主動調(diào)用flush()方法。

          有讀就有寫,寫文本文件可以使用PrintWriter,F(xiàn)ileWriter,BufferedWriter。
          FileWriter fw = new FileWriter("D:\\test01.txt");    
          String s = "hello world!\n";    
          fw.write(s,0,s.length());    
          fw.flush();    
            
          OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\test02.txt"));    
          osw.write(s,0,s.length());    
          osw.flush();    
            
          PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:\\test03.txt")),true);    
          pw.println(s);    
            
          fw.close();    
          osw.close();    
          pw.close(); 

          如果想在文件末尾追加內(nèi)容,聲明加個true就加一個"true"就可以了:FileWriter fw = new FileWriter("log.txt",true);
          下面是一個BufferedWriter的例子:
          File file = new File("D:\\test.txt");  
          File dest = new File("D:\\test01.txt");  
          try {  
              BufferedReader reader = new BufferedReader(new FileReader(file));  
              BufferedWriter writer  = new BufferedWriter(new FileWriter(dest));  
              String line = reader.readLine();  
              while(line!=null){  
                  writer.write(line);  
                  line = reader.readLine();  
              }  
              writer.flush();
              reader.close();
              writer.close();
          catch (FileNotFoundException e) {  
              e.printStackTrace();  
          catch (IOException e) {  
              e.printStackTrace();  

          最后寫的程序用于簡單的文件讀寫操作。FileHelper類中的readFile方法用于讀取文件內(nèi)容,writeFile方法用于向文件中寫入內(nèi)容。
          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.FileReader;
          import java.io.FileWriter;



          public class FileHelper {
              public static String readFile(String filename) throws Exception {
                  BufferedReader reader = new BufferedReader(new FileReader(filename));  
                  String ans = "", line = null;
                  while((line = reader.readLine()) != null){
                      ans += line + "\r\n";
                  }
                  reader.close();
                  return ans;
              }
              public static void writeFile(String content, String filename) throws Exception {
                  BufferedWriter writer  = new BufferedWriter(new FileWriter(filename));
                  writer.write(content);
                  writer.flush();
                  writer.close();
              }
              public static void main(String[] args) throws Exception {
                  String ans = readFile("D:\\input.txt");
                  writeFile(ans, "D:\\output.txt");
              }
          }
          posted on 2015-03-04 13:26 marchalex 閱讀(282) 評論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 尖扎县| 民勤县| 怀来县| 龙海市| 遵义县| 康保县| 搜索| 常山县| 巴马| 巩义市| 绥滨县| 崇义县| 西丰县| 通江县| 灵寿县| 郑州市| 明星| 巨野县| 遂宁市| 姜堰市| 潜江市| 南投市| 栾城县| 林口县| 新竹市| 涟水县| 淮南市| 博兴县| 郎溪县| 盐城市| 西丰县| 城市| 托里县| 海口市| 叙永县| 兖州市| 临泉县| 科技| 恩施市| 扎兰屯市| 泾源县|