gpt4 book ai didi

java - 使用java nio删除文件

转载 作者:行者123 更新时间:2023-11-30 03:47:37 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com