Повторяющаяся проверка, существует ли файл или нет

Если я хотел бы проверить, существует ли файл или нет, я буду использовать:

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()
Другие вопросы по тегам