java按行讀取txt並按行寫入

   IO流想必你們都很熟悉了,本次實現的需求是按行讀取文件內容而且按行寫入,代碼以下:app

     

 1 try {
 2             String encoding="utf-8";    //設定本身須要的字符編碼集 
 3             File file = new File("c:/text.txt");
 4             if(file.exists() && file.isFile()){
 5                 InputStreamReader read = new InputStreamReader(
 6                         new FileInputStream(file), encoding);// 考慮到編碼格式        
 7                 //FileReader read = new FileReader(file); //不考慮轉碼,可以使用FileReader;
 8                 BufferedReader br = new BufferedReader(read);//使用緩衝流按行讀取
 9                 String lineText = null;
10                 StringBuffer sb = new StringBuffer();
11                 while((lineText=br.readLine()) !=null){
12                     System.out.println(lineText);
13                     sb.append(lineText+"\n");     
14                 }
15                 br.close();
16                 read.close();
17                 FileWriter fw = new FileWriter("c:/t.txt");   
18                 BufferedWriter bw = new BufferedWriter(fw);   
19                 bw.write(sb.toString());
20                 bw.close();
21                 fw.close();
22             }else{
          System.out.println("找不到指定的文件");   
         }
23 24 } catch (IOException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 }

  下面是我的對以上代碼的理解:函數

  一、爲何用字符流 而不用字節流?編碼

        文件讀取選擇字符流是由於文件是純文本,使用字符流能夠按行讀取,操做快,適合閱讀。spa

  二、爲何用InputStreamReader 而不用FileReader?code

    FileReader是InputStreamReader的子類,繼承了它的方法,則不一樣點在於構造函數,對象

    InputStreamReader的構造函數參數爲 InputStream 和編碼方式,而FileReader的構造函數參數能夠file對象和String的path,當須要根據file和pahtblog

    讀取文件時,選用FileReader。繼承

  另記:在使用String類的split()方法時,按「|」 截取字符串的時候,並不能出現正常的結果,緣由是「|」 是轉義字符,utf-8

      需加("\\|")。字符串

相關文章
相關標籤/搜索