2015-07-09 28 views
1

我正在讀取XML文件,處理元素並使用從輸入文件中提取的元素編寫另一個XML文件。 爲此,我使用StAX遊標:我使用XMLStreamReader讀取元素,並使用XMLStreamWriter在另一個文件中寫入元素。刪除XML輸入文件Java

讀者:

XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
    XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new FileReader(inputFile)); 

筆者:

XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); 
XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(new FileOutputStream (outputFile),"UTF-8"); 

後,我完成處理和寫輸出文件,我想刪除我讀文件(輸入文件)。對於我正在使用的trhis:

public void deleteInputFile(String inputFile) { 
     File fileToDelete = new File(inputFile); 
     if(fileToDelete.delete()){ 
      System.out.println(fileToDelete.getName() + " is deleted!"); 
     }else{ 
      System.out.println("Delete operation is failed."); 
     } 
    } 

所有程序都正常工作,但刪除操作失敗。我收到回覆:

刪除操作失敗。

我認爲閱讀器在閱讀後關閉輸入文件。

問題是,編寫我需要的文件後,我做了什麼刪除輸入文件?

+1

嘗試關閉的FileReader? – dnault

+0

@dnault關閉流只是停止讀取或寫入操作,但不涉及文件 –

+0

請確保'streamReader' /'streamWriter'已關閉 –

回答

0

所有流必須另行申報,以便您可以單獨關閉它們:

// Declarring streams: 
FileReader fr = new FileReader(inputFile); 
XMLStreamReader streamReader = inputFactory.createXMLStreamReader(fr); 
... 

// Closing streams. 
fr.close(); 
streamReader.close(); 

// Deleting inputFile 
deleteMethod(); 
2

確保關閉輸入流,然後刪除文件。

您可以刪除文件,目錄或鏈接。使用符號鏈接時,鏈接將被刪除,而不是鏈接的目標。對於目錄,目錄必須爲空,否則刪除失敗。

Files類提供了兩種刪除方法。

delete(Path)方法刪除文件或拋出異常,如果刪除失敗。例如,如果該文件不存在,則拋出NoSuchFileException。您可以捕獲該異常,以確定爲什麼刪除失敗如下:

try { 
    Files.delete(path); 
} catch (NoSuchFileException x) { 
    System.err.format("%s: no such" + " file or directory%n", path); 
} catch (DirectoryNotEmptyException x) { 
    System.err.format("%s not empty%n", path); 
} catch (IOException x) { 
    // File permission problems are caught here. 
    System.err.println(x); 
} 

deleteIfExists(Path)方法還會刪除該文件,但如果該文件不存在,不會引發任何異常。如果您有多個線程刪除文件,並且您不想僅因爲一個線程首先執行而引發異常,那麼靜默失敗非常有用。

https://docs.oracle.com/javase/tutorial/essential/io/delete.html

採取下面是另一個例子http://www.mkyong.com/java/how-to-delete-file-in-java/