2017-10-13 49 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 ;-)