java - 使用java nio删除文件

标签 java

我已经编写了从本地文件系统中删除文件的代码。但它失败了,因为其他线程正在访问该文件。

Exception : the process cannot access the file because it is being used by another process. while deleting file java

下面的代码:

private class DeleteFileRecursively extends SimpleFileVisitor<Path> {

        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                throws IOException {
            if (file.toString().equals(
                    SECURE_PATH + File.separator + MMKEYSTORE)
                    || file.toString().equals(
                            SECURE_PATH + File.separator + MMTRUSTSTORE)) {
                Files.delete(file);
            } else {
                return FileVisitResult.SKIP_SIBLINGS;
            }

            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult visitFileFailed(Path file, IOException exc)
                throws IOException {
            if (file.toString().equals(
                    SECURE_PATH + File.separator + MMKEYSTORE)
                    || file.toString().equals(
                            SECURE_PATH + File.separator + MMTRUSTSTORE)) {
                Files.delete(file);
            } else {
                return FileVisitResult.SKIP_SIBLINGS;
            }

            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult postVisitDirectory(Path file, IOException exc)
                throws IOException {
            if (exc == null) {
                if (file.toString().equals(
                        SECURE_PATH + File.separator + MMKEYSTORE)
                        || file.toString().equals(
                                SECURE_PATH + File.separator + MMTRUSTSTORE)) {
                    Files.delete(file);
                } else {
                    return FileVisitResult.SKIP_SIBLINGS;
                }
                return FileVisitResult.CONTINUE;
            } else {
                // directory iteration failed; propagate exception
                throw exc;
            }
        }

知道我缺少什么吗,我想强行删除文件。

最佳答案

如果您运行的是 Windows,那么这并不容易。

操作系统只是禁止您删除打开的文件。 您唯一能做的就是确保您没有自己打开该文件。

如果您想在完成后删除它,可以尝试 File.deleteOnExit()

关于java - 使用java nio删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25237799/

相关文章:

java - XML Xpath 获取元素的最后一个子元素

java - 在每次方法调用后检查对象是否为空

java - IntelliJ - lambda 表达式 { 换行大括号?

Java:处理自定义组件文本字段中的 ' - ' 字符

java - 在 HttpURLConnection 上设置 FollowRedirects 的实例值

java - Hibernate 无法确定多对多关系中 : java. util.Collection 的类型

java - 如何有效地从 10 G 文件中读取单词并将它们按频率排序?

java - 关于java 1.4.2中SpringLayout的问题

java - XCode 的代码感知可以在项目之外工作吗?

java - 如何使用 ActionListener 更改 JTable