Как проверить, существует ли файл
Короткий ответ
Пусть рядом с программой лежит config.txt. Files.exists() проверяет, есть ли файл или папка по пути:
void main() {
IO.println(Files.exists(Path.of("config.txt")));
IO.println(Files.exists(Path.of("missing.txt")));
}Результат:
true
falseФайл или папка
isRegularFile() и isDirectory() уточняют, что именно лежит по пути:
void main() {
Path path = Path.of("config.txt");
IO.println(Files.isRegularFile(path));
IO.println(Files.isDirectory(path));
IO.println(Files.isDirectory(Path.of(".")));
}Результат:
true
false
trueПрава доступа
isReadable() и isWritable() проверяют, можно ли читать и писать:
void main() {
Path path = Path.of("config.txt");
IO.println(Files.isReadable(path) + " " + Files.isWritable(path));
}Результат:
true trueЧастая ошибка
Проверить exists() и считать, что чтение точно пройдёт. Между проверкой и чтением файл может удалить другая программа. Проверка удобна для сообщений пользователю, но IOException всё равно нужно обрабатывать:
void main() {
Path path = Path.of("config.txt");
try {
IO.print(Files.readString(path));
} catch (IOException e) {
IO.println("Cannot read " + path + ": " + e.getMessage());
}
}Результат:
debug=trueФункции из этого ответа
- Files.exists() — Проверяет, существует ли файл или папка. Рядом — isDirectory(), isRegularFile(), size().