文件存在时无法使用IO或NIO删除文件

问题描述

在第一种方法中,我创建了一个文件,该文件在处理后需要删除。为此,我使用输入流。处理后,必须从硬盘驱动器中删除名为fileSrc的文件。

我尝试了两种不同的方式删除文件。

3

在我的日志中,我注意到该文件未删除。 我下载文件以另一种方法复制inputstream。传统上:

public File signPDF(File fileSrc) {
    // signature process ... 

    boolean isDeleted = fileSrc.delete();
    boolean isFileExist = fileSrc.exists();
    logger.info("Is file exist ? - " + isFileExist);
    if(isDeleted) {
        logger.info("File has been deleted");
    } else {
        logger.warn("File could not be deleted");
    }
    // try to delete on java exit
    Path path = Paths.get(fileSrc.toString());
    try {
        isFileExist = Files.deleteIfExists(path);
        logger.info("File has been deleted with NIO: " + isFileExist);
    } catch (IOException e) {
        //deleting file failed
        logger.warn("File could not be deleted with NIO: " + isFileExist);
        e.printStackTrace();
    }
    
    return signedFile
}

我尝试了几种方法来关闭连接和inputStream

FileUtils.copyInputStreamToFile(inputStream,targetFile);

这些方法都无法正常工作。

请注意:由于使用@GyroGearless,此问题已得到解决,修改了文件路径(不正确)。终于我遇到了第二个问题。该文件已删除,然后再处理。 我用以下代码片段解决了这个问题:

 IOUtils.close(con);
 inputStream.close();
 IOUtils.closeQuietly(inputStream);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)