Повторяющаяся проверка, существует ли файл или нет
Если я хотел бы проверить, существует ли файл или нет, я буду использовать:
File file = new File("name of File");
if(file.exists()) { //do something}
Но что мне делать, если я хотел бы использовать его в качестве проверки установки: файл может быть создан, например, через 5 или 10 минут: как же file.exists()
контролирует, существует файл или нет?
НАПРИМЕР
- Установка началась, файл не существует
- Установка продолжается 5 мин. Файл все еще не существует
- Через 10 минут - файл был создан - например,
Installation.chk
(файл уже существует) мое утверждение if теперь верно
Возможно ли создать его на Java? Если да, то как?
2 ответа
Может быть, есть лучший способ:
http://docs.oracle.com/javase/tutorial/essential/io/notification.html
Вместо того, чтобы зацикливать your there (), пусть ОС сообщит вам, если что-то изменится.
При работе с файловой системой вы должны принять условия гонки и планировать их.
Вы можете только проверить, существует ли файл сейчас, но не будет ли он продолжать существовать, потому что диски могут быть смонтированы / извлечены, учетные записи суперпользователя могут удалять файлы или отменять связь, или делать родительские каталоги нечитаемыми.
java.io
также не поддерживает блокировку файлов.
Если вам нужно проверить, что что-то установлено, вы можете приложить максимум усилий, но вы не можете помешать пользователю удалить другое программное обеспечение, пока у вас работает.
if(file.exists()) { /*do something*/}
Это редко полезно само по себе.
Часто объединение типа файла и проверки прав доступа выявляет больше плохих состояний, чем просто проверка существования.
file.isFile() && file.canRead()