麻烦大家帮忙看一下这段程序,向一个文件中写入文字之后再替换其中某些内容,不知为什么,第一次执行的时候一切正常,而从第二次开始,每次执行都是把修改后的文件直接累加到原文件后面了,我只想要修改后的,怎么办?该修改哪里,怎么修改?谢谢。  
 
 
protected  String  fileName;  
   private  static  String  filename=  "d:\\project\\ServUDaemon.ini";  
   static  File  aFile  =  new  File(filename);  
   private  static  Vector  vec  =  new  Vector();  
 
void  jButton1_actionPerformed(ActionEvent  e)  {  
       PrintWriter  out  =  null;  
       BufferedReader  in  =  null;  
       try  {  
           in  =  new  BufferedReader(new  FileReader(aFile));  
       }catch  (Exception  exx)  {  
           exx.printStackTrace(System.out);  
       }  
 
     try  {  
           String  s  =  in.readLine();  
           String  original  =  "\\[Domain1\\]";                 //被替换的文字  
           String  replacestr  =  original  +  replacestring      //待替换文字    
           File  file  =  new  File(filename);          //开始在文件末尾加入内容  
           BufferedWriter  out1  =  new  BufferedWriter(new  FileWriter(file,  true));  
           String  appendstr  =  "aaaaaaa";  
           out1.write(String.valueOf(appendstr));  
           out1.close();  
           out1  =  null;  
           file  =  null;               //在文件末尾加入内容结束  
           while  (s  !=  null)  {    //开始查找并替换内容  
               s  =  s.replaceAll(original  ,replacestr);  
                vec.add(s);  
               s  =  in.readLine();  
           }  
           in.close();   
           try  {  
             out  =  new  PrintWriter(new  FileWriter(aFile,  false));  
           }  
           catch  (IOException  ex)  {  
           }  
           for  (int  i  =  0;  i  <  vec.size();  i++)  {  
               out.println(  (String)  vec.get(i));  
               System.out.println(  (String)  vec.get(i));  
           }  
           out.close();  
   }  
   catch  (IOException  ex1)  {  
   }  
}

解决方案 »

  1.   

    看看String或者StringBuffer又没有在读完第一次后清空!
      

  2.   

    new  FileWriter(file,  true);指定了true就表示是append模式,把true去掉就好了
      

  3.   

    private  static  Vector  vec  =  new  Vector();  
    写成private Vector  vec;
    然后把vec =new Vector();放到BufferedReader  in  =  null; 的后面。
      

  4.   

    new FileWriter(file,true)那个地方我确实是想要在文本后面追加,该操作执行一次后才不允许再追加的。所以这个没有问题。zeus0915的方法我试过了,刚好能解决这个问题,谢谢了。
      

  5.   

    楼主很有可能是第一次写文件后,文件流己经在文件的尾端了,你第二次写的时候没有将文件流重新定到文件的开头,另外就是不要用Append,这个方法是追加的。