2017-10-13 50 views
-3

我通过XmlParser检查后写入一些文本。 所有工作正常,但代码,不要关闭该文件,那么我在程序中有问题后者。它创建.tmp文件。那个动作结束后我的文件有多接近?newOutputStream关闭文件

def path = new File("my/path")) 
def xml = new XmlParser().parse(path) 
     xml.appendNode("include", [ 
       myAppendToCheck" 
     ]) 
     XmlUtil.serialize(xml, path.newOutputStream())    

    path.newOutputStream().flush() 
    path.newOutputStream().close() 

回答

2

这里的问题是您创建3个不同的输出流。只需将流存储在一个变量中:

def stream = path.newOutputStream() 
XmlUtil.serialize(xml, stream) 
stream.close() 

还要注意,在流关闭之前不需要刷新。

+1

这是非常有用的,我仍然在java新手。谢谢 :) –

0

只需使用withOutputStream

def path = new File("my/path")) 
def xml = new XmlParser().parse(path) 

xml.appendNode("include", [ 
    myAppendToCheck" 
]) 

path.withOutputStream { os -> 
    XmlUtil.serialize(xml, os)    
} 

这将关闭该流为你当封闭完成...

我还是新手,在java中

这是Groovy,而不是Java ;-)