所以我尝试删除System32文件夹中的文件夹,但java似乎无法找到它......
File gwxFolder = new File("C:/Windows/System32/GWX");
System.out.println(gwxFolder.getPath());
if(gwxFolder.exists()){
IO.deleteFolder(gwxFolder);
} else {
JOptionPane.showMessageDialog(null, "Can't find your folder.");
}
答案 0 :(得分:1)
虽然我无法准确地告诉你什么是错的,但我可能会告诉你如何得到答案。
java.io.File已经过时了。它是Java 1.0的一部分,由于各种原因,它的许多方法都不可靠,通常返回一个无法提供的魔术值,如0或null,而不是抛出实际描述失败性质的异常。
File类已替换为Path。您可以使用Paths.get或File.toPath获取路径实例。
获得路径后,大多数操作都使用Files类执行。特别是,您可能需要Files.exists或Files.isDirectory。
您可能还想考虑使用Files.walkFileTree自行删除该目录,因此如果失败,您将获得有用且信息丰富的例外:
Path gwxFolder = Paths.get("C:\\Windows\\System32\\GWX");
if (Files.exists(gwxFolder)) {
try {
Files.walkFileTree(gwxFolder, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAtttributes attributes)
throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException e)
throws IOException {
if (e == null) {
Files.delete(dir);
}
return super.postVisitDirectory(dir, e);
}
});
} catch (IOException e) {
StringWriter stackTrace = new StringWriter();
e.printStackTrace(new PrintWriter(stackTrace, true));
JOptionPane.showMessageDialog(null, stackTrace);
}
}