Java:
Проверка существования директории
Как это сделать:
Вот как проверить существует ли каталог с java.nio.file
:
import java.nio.file.Files;
import java.nio.file.Path;
public class DirectoryCheck {
public static void main(String[] args) {
Path directoryPath = Path.of("/path/to/directory");
// Проверяем, существует ли каталог
boolean directoryExists = Files.exists(directoryPath);
// Выводим результат
System.out.println("Существует ли каталог? " + directoryExists);
}
}
Если вы запустите это, в вашей консоли просто отобразится:
Существует ли каталог? true // или false
Ударяйте.
Погружение в детали
В прошлом люди использовали метод java.io.File.exists()
. Но теперь актуальность приобрел java.nio.file.Files.exists(Path)
, поскольку он более универсален. С помощью того же API вы также можете проверять атрибуты файла.
Но это еще не все. Метод Files.exists
не является непробиваемым — есть условия гонки. Что, если с каталогом что-то случится сразу после проверки? Бац, и операция проваливается. Чтобы этого избежать, используйте Files.exists
с осторожностью и корректно обрабатывайте исключения при выполнении операций с файлами.
В качестве альтернативы, вы можете просто попытаться выполнить операцию с файлом и поймать возможное исключение NoSuchFileException
. Это известно как подход “легче просить прощения, чем разрешения” (EAFP) против “смотри прежде, чем прыгнуть” (LBYL), который использует Files.exists()
.
Смотрите также
- Files.exists()
- Ввод и вывод файлов в Java
- Классная статья о EAFP против LBYL: Принцип EAFP