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