Проверка создания файла в Java
Делаю простую консольную программу, которая при запуске просит указать путь для создания нового файла на HDD пользователя. Файл может быть только .txt , столкнулся с проблемой, что пользователь может ввести некорректный путь который не может существовать, или некорректное имя файла. Или, еще случай, если ввести просто символ "A", то программа создаст файл "A" без расширения в директории моего проекта. Как сделать корректную проверку, создался ли файл на диске? Пробовал с file.exists() и file.isFile(), но тогда в последнем случае проверка получается пройденной.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Введите путь к файлу");
String filePath = reader.readLine();
File file = new File(filePath);
file.createNewFile();
Ответы (1 шт):
Проверить расширение можно до создания файла. Простой вариант - использовать filePath.toLowerCase().endsWith(".txt"). Такой вариант не учитывает попытки вроде name..txt. Сложный вариант проверки - тема для отдельного вопроса.
Сама проверка создания файла не требуется. Метод createNewFile() сгенерирует исключение, если что-то пойдет не так. Вам достаточно будет его поймать и корректно обработать.
Если пользователь вводит просто имя, то появление файла в каком-то месте по умолчанию - ожидаемо. Если Вы хотите, чтобы каталог обязательно был указан, я бы разделил процесс на два пункта:
Просим ввести путь к файлу без самого имени. Мы можем проверить является ли путь каталогом при помощи метода
isDirectory()Просим ввести имя файла, проверяем расширение, и создаем объект файла конструктором
File(String parent, String child)