Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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
使用javanio删除文件_Java - Fatal编程技术网

使用javanio删除文件

使用javanio删除文件,java,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> {

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

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;
            }
        }
私有类deleteFileRecursive扩展SimpleFileVisitor{
@凌驾
公共文件VisitResult visitFile(路径文件,基本文件属性属性属性)
抛出IOException{
如果(file.toString().equals(
安全_PATH+File.separator+MMKEYSTORE)
||file.toString().equals(
安全(路径+File.separator+MMTRUSTSTORE)){
文件。删除(文件);
}否则{
返回文件visitResult.SKIP_;
}
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,IOException exc)
抛出IOException{
如果(file.toString().equals(
安全_PATH+File.separator+MMKEYSTORE)
||file.toString().equals(
安全(路径+File.separator+MMTRUSTSTORE)){
文件。删除(文件);
}否则{
返回文件visitResult.SKIP_;
}
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult postVisitDirectory(路径文件,IOException exc)
抛出IOException{
如果(exc==null){
如果(file.toString().equals(
安全_PATH+File.separator+MMKEYSTORE)
||file.toString().equals(
安全(路径+File.separator+MMTRUSTSTORE)){
文件。删除(文件);
}否则{
返回文件visitResult.SKIP_;
}
返回FileVisitResult.CONTINUE;
}否则{
//目录迭代失败;传播异常
抛出exc;
}
}

如果你知道我遗漏了什么,我想强制删除文件。

如果你运行的是Windows,那就不容易了

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


如果您想在完成后删除它,您可以尝试在我的应用程序中实际使用它的证书,所以基本上我需要关闭应用程序然后删除它。在应用程序启动时无法删除它。我尝试了所有可能的方法。