删除 XML 个输入文件 Java

Delete a XML input file Java

我正在读取一个 XML 文件,处理元素并使用从输入文件中提取的元素编写另一个 XML 文件。 为此,我使用 StAX 游标:我使用 XMLStreamReader 读取元素,并使用 XMLStreamWriter.

在另一个文件中写入元素

reader:

 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.");
        }
    }

所有程序工作正常,但删除操作失败。我收到回复:

Delete operation is failed.

我认为 reader 会在读取输入文件后将其关闭。

问题是,写完我需要的文件后我要删除输入文件怎么办?

确保关闭输入流,然后删除文件。

您可以删除文件、目录或 links。使用符号 links,link 被删除而不是 link 的目标。带目录,目录必须为空,否则删除失败

文件class提供两种删除方式。

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/

必须单独声明所有流,以便您可以单独关闭它们:

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

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

// Deleting inputFile
deleteMethod();