2014-03-31 74 views
0

在我的下面的代碼中,我想用「Demographics」替換文本「DEMO」,但不是替換文本,而是刪除文本文件的全部內容。代碼刪除文件的內容而不是替換文本

目錄裏面的文件: DEMO 數據 上午

PS:我是在Java初學者

package com.replace.main; 

import java.io.*; 

public class FileEdit { 

public static void main(String[] args) { 
    BufferedReader br = null; 
    BufferedWriter bw = null; 
    String readLine, replacedData; 
    try { 

     bw = new BufferedWriter(
       new FileWriter(
         "Demg.ctl")); 

     br = new BufferedReader(
       new FileReader(
         "Demg.ctl")); 

     System.out.println(br.readLine()); //I Get Null Printed Here 
     while ((readLine = br.readLine())!= null) { 
      System.out.println("Inside While Loop"); 
      System.out.println(readLine); 
      if (readLine.equals("DEMO")) { 
       System.out.println("Inside if loop"); 
       replacedData = readLine.replaceAll("DEMO","Demographics"); 
      } 

     } 
     System.out.println("After While"); 
     br.close(); 
    } catch (IOException e) { 

     e.printStackTrace(); 

    } 
    } 
} 

回答

0

你打開一個作家對你的文件,但你不寫任何東西。這意味着您的文件被替換爲空文件。

除此之外,你還需要關閉你的作家,而不僅僅是讀者。

最後但並非最不重要的是,你的條件是錯誤的。

if (readLine.equals("DEMO")) { 

應該讀

if (readLine.contains("DEMO")) { 

否則,如果你的行中包含 「DEMO」,但沒有別的它只會返回true。

+0

謝謝。但是,如何打開Writer來替換文件的內容?我需要從我的代碼中刪除FileWriter嗎? – balajiv

+0

'在您的代碼中創建新的FileWriter(「Demg.ctl」)'創建此作者。你可以寫入你的變量'bw'。 –

+0

如果替換文本的長度與原始文本長度不同,則無法僅僅「替換」文件中的某些文本。您必須將整個文件複製到輸出中,在複製時執行替換,然後刪除原始文件並將輸出重命名爲舊名稱。 –

0
I'm updating the answer to my own question. 

package com.replace.main; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 

public class FileEdit 
    { 
    public static void main(String args[]) 
     { 
     try 
      { 
      BufferedReader reader = new BufferedReader(new FileReader("Demg.ctl")); 
      String readLine = ""; 
      String oldtext = ""; 
      while((readLine = reader.readLine()) != null) 
       { 
       oldtext += readLine + "\r\n"; 
      } 
      reader.close(); 
      // To replace the text 
      String newtext = oldtext.replaceAll("DEMO", "Demographics"); 

      FileWriter writer = new FileWriter("Demg.ctl"); 
      writer.write(newtext); 
      writer.close(); 
     } 
     catch (IOException e) 
      { 
      e.printStackTrace(); 
     } 
    } 
}