Почему Java не может найти этот файл в System32?
Поэтому я попытался удалить папку в папке 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.");
}
1 ответ
Хотя я не могу сказать вам точно, что не так, я могу сказать вам, как получить ответ.
Файл старый и устаревший. Он был частью Java 1.0, и многие его методы ненадежны по разным причинам, часто возвращая неинформативное магическое значение, такое как 0 или ноль, вместо того, чтобы выдавать исключение, которое фактически описывает природу сбоя.
Класс File был заменен на Path. Вы можете получить экземпляр 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);
}
}