2016-07-01 55 views
-1

我想在解析後刪除一個有錯誤的xml文件。解析過程拋出一個異常。問題只發生在Windows操作系統下。在Linux下,刪除工作正常。 這是我使用的代碼,在java中解析後刪除xml文件有錯誤

try{ 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 

    DocumentBuilder db = dbf.newDocumentBuilder(); 

    Document doc = (Document) db.parse(file); 
    } catch(Exception e){ 
    file.delete(); 
} 
+0

請提供堆棧跟蹤:http://stackoverflow.com/help/how-to-ask –

回答

0

是否file.delete()拋出一個異常?文件的路徑是否正確?

您的代碼存在的問題是,如果存在解析問題(SAXException)或者您提供給DocumentBuilder的文件不正確(IOException),則它沒有任何區別。

+0

file.delete()不會引發異常。解析時發生異常。文件路徑也是正確的。問題只發生在Windows操作系統。我嘗試加入單獨的catch塊。 –

+0

我假設Windows認爲您正在嘗試解析的文件仍在使用中,所以文件保持鎖定狀態,但我可能是錯的。我不知道當拋出異常時,解析方法是否關閉流。 編輯:不要將文件提供給DocumentBuilder,請嘗試在打開一個FIleInputStream之前,將它傳遞給參數,並在刪除該文件之前將其明確關閉。 – Ephi

+0

我調試了該文件。刪除語句正在執行。但文件不會被刪除。 –