2013-06-03 145 views
0

我想在XML文件中写一些XML行。 但是,我只能做到这一点,如果该文件不存在,因为如果它存在,我会覆盖信息。写一个现有的XML文件,而不会覆盖

这里是我的代码:

public void writeToXMLSimulation() throws IOException { 
    File f = new File("Simulation_" + pt.ipp.isep.gecad.masgrip.MASGriP_GUI.getContainerNameTxt().getText() + "_Details.xml"); 
    OutputFormat format = OutputFormat.createPrettyPrint(); 
    format.setEncoding("UTF-8"); 
    XMLWriter xmlWriter = null; 
    if (!f.exists()) { 

     try { 
      xmlWriter = new XMLWriter(new OutputStreamWriter(
        new FileOutputStream(f), "UTF8"), 
        format); 
      xmlWriter.write(configs.XMLwriterDOM4J.createXMLDocumentForSimulations(jLabelAL, jTextFieldAL, id)); 
     } finally { 
      if (xmlWriter != null) { 
       xmlWriter.flush(); 
       xmlWriter.close(); 
      } 
     } 

    } else { 

     try { 
      //I NEED SOMETHING HERE TO GET ME TO THE LAST LINE OF FILE 

    xmlWriter.write(
configs.XMLwriterDOM4J.createXMLDocumentForSimulations(
jLabelAL, jTextFieldAL, id)); 
      } finally { 
       if (xmlWriter != null) { 
        xmlWriter.flush(); 
        xmlWriter.close(); 
       } 
      } 

     } 

    } 

我能做些什么,使我的代码写在最后一行之后? (不overwritting)

感谢

+0

重写该文件,然后在最后添加新的东西。 – LiverpoolFTW

+0

你不能附加任何有意义的XML文件。如果它是一个正确结构化的文件,则所有内容都需要位于单个顶级标记内。你真的想完成什么?你可以举一个简短的例子来说明如何改变现有的XML文件吗? –

+0

我不需要它完全是一个XML文件。我只是以XML扩展为例。因为,稍后,这些文件将被命名为:something.notxml 我只想知道如何写文件的最后一行 – SaintLike

回答

1

在一般情况下,您可以使用写入到一个文件中追加方式:

new FileOutputStream(file, true); 

第二个参数是真正意义上追加和假义覆盖的布尔。默认值为false(因为你毫无疑问发现了)。

这就是说,将数据附加到XML文件的末尾可能没有意义。使用XML读取器将XML文件读入Document对象,向该对象添加元素,然后将该对象写回到磁盘会更好。

+0

好的,我明白你的意思了。我会尝试的。如果我在这里问,如果我遇到麻烦,你介意吗? – SaintLike