Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java中删除XML输入文件_Java_Xml_Stax_Delete File - Fatal编程技术网

从Java中删除XML输入文件

从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

我正在读取一个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");
在我完成处理和写入输出文件后,我想删除我读取的文件(输入文件)。对于我正在使用的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