2014-03-31 70 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(); 
     } 
    } 
}