从Java中删除XML输入文件
我正在读取一个XML文件,处理元素,并使用从输入文件中提取的元素编写另一个XML文件。 为此,我使用了StAX游标:我使用XMLStreamReader读取元素,并使用XMLStreamWriter在另一个文件中写入元素 读者:从Java中删除XML输入文件,java,xml,stax,delete-file,Java,Xml,Stax,Delete File,我正在读取一个XML文件,处理元素,并使用从输入文件中提取的元素编写另一个XML文件。 为此,我使用了StAX游标:我使用XMLStreamReader读取元素,并使用XMLStreamWriter在另一个文件中写入元素 读者: XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLStreamReader streamReader = inputFactory.createXMLStreamReader(ne
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.");
}
}
所有程序工作正常,但删除操作失败。我得到的答复是:
删除操作失败
我认为读取器在读取输入文件后会关闭它
问题是,在写入所需文件后,如何删除输入文件?请确保关闭输入流,然后删除该文件 您可以删除文件、目录或链接。使用符号链接时,链接将被删除,而不是链接的目标。对于目录,目录必须为空,否则删除失败 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)
方法也会删除该文件,但如果该文件不存在,则不会引发异常。当您有多个线程删除文件,并且您不想仅仅因为一个线程先抛出异常而抛出异常时,静默失败非常有用
取自
下面是另一个示例必须单独声明所有流,以便您可以单独关闭它们:
// Declarring streams:
FileReader fr = new FileReader(inputFile);
XMLStreamReader streamReader = inputFactory.createXMLStreamReader(fr);
...
// Closing streams.
fr.close();
streamReader.close();
// Deleting inputFile
deleteMethod();
尝试关闭FileReader?@dnault关闭流只是停止读写操作,但与文件无关。请确保关闭
streamReader
/streamWriter