我正在读取一个 XML 文件,处理元素并使用从输入文件中提取的元素编写另一个 XML 文件。 为此,我使用 StAX 游标:我使用 XMLStreamReader 读取元素,并使用 XMLStreamWriter 将元素写入另一个文件。
读者:
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new FileReader(inputFile));
作者:
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(new FileOutputStream (outputFile),"UTF-8");
完成处理和写入输出文件后,我想删除我读取的文件(输入文件)。为此,我正在使用:
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.
我认为读者在读取输入文件后关闭它。
问题是,在写入我需要的文件后,我该怎么做才能删除输入文件?
最佳答案
确保关闭输入流,然后删除该文件。
您可以删除文件、目录或链接。对于符号链接(symbolic link),链接被删除,而不是链接的目标。对于目录,目录必须为空,否则删除失败。
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/
关于java - 删除 XML 输入文件 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31329647/