2011-05-31 30 views
2

我有以下Java代碼,它將在xml中搜索特定標記,然後向其添加一些文本並保存該文件。我無法找到一種方法將emporary文件重命名爲原始文件。請建議。Java中的文件刪除和重命名

import java.io.*; 

    class ModifyXML { 

     public void readMyFile(String inputLine) throws Exception 
     { 

      String record = ""; 

      File outFile = new File("tempFile.tmp"); 

      FileInputStream fis = new FileInputStream("InfectiousDisease.xml"); 

      BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 

      FileOutputStream fos = new FileOutputStream(outFile); 

      PrintWriter out = new PrintWriter(fos); 

      while ((record=br.readLine()) != null) 
      { 
       if(record.endsWith("<add-info>")) 
       { 
        out.println(" "+"<add-info>"); 
        out.println(" "+inputLine);    
       } 
       else 
       { 
        out.println(record); 
       } 

      } 
      out.flush(); 
      out.close(); 
      br.close(); 
      //Also we need to delete the original file 
      //outFile.renameTo(InfectiousDisease.xml);//Not working 

     } 

     public static void main (String[] args) { 
      try 
      { 
      ModifyXML f = new ModifyXML(); 
      f.readMyFile("This is infectious disease data"); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    } 

感謝

+0

可能重複[在java中刪除和重命名文件](http://stackoverflow.com/questions/5362067/delete-and-rename-a-file-in-java) – 2017-04-27 10:24:47

回答

8

先刪除原來的文件,然後重命名新文件:

File inputFile = new File("InfectiousDisease.xml"); 
File outFile = new File("tempFile.tmp"); 

if(inputFile.delete()){ 
    outFile.renameTo(inputFile); 
} 
+0

是的,它的工作。非常感謝。我認爲創建一個新的輸入文件不會有什麼好處。 – JavaBits 2011-05-31 14:24:42

0

您可以使用

outFile.renameTo(new File(newFileName)); 

你必須確保這些文件的時候都打不開。

+1

它是renameTo而不是重命名 – VirtualTroll 2011-05-31 14:14:25

+0

@Amine,謝謝。 – 2011-05-31 14:16:21

1

重命名文件的好方法是。

File file = new File("path-here"); 
file.renameTo(new File("new path here")); 
1

在代碼中有幾個問題。

首先您的描述提到重命名原始文件並添加一些文本。您的代碼不會這樣做,它會打開兩個文件,一個用於閱讀,另一個用於寫入(使用附加文本)。這是做事情的正確方法,因爲使用您正在使用的技術,就地添加文本並不是真的可行。

第二個問題是你打開一個臨時文件。臨時文件在關閉時會自行刪除,因此您關閉文件後添加文本的所有工作都會消失。

第三個問題是您正在以純文本格式修改XML文件。這有時會起作用,因爲XML文件是純文本文件的子集,但沒有跡象表明您試圖確保輸出文件是XML文件。也許你對輸入文件的瞭解比上面提到的要多,但是如果你想讓它在100%的輸入情況下正常工作,你可能需要創建一個SAX寫入器,它寫出所有SAX讀取器讀取的內容,正確的標籤位置。

相關問題