Как проверить наличие динамически созданного файла в Java? - PullRequest
3 голосов
/ 28 апреля 2010

У меня есть приложение, в котором мне нужно проверить файл, который может быть динамически создан во время моего выполнения. Я откажусь через некоторое время MAX, когда файл еще не обнаружен. Я хотел знать, существует ли в Java более эффективный метод проверки файла, отличного от его опроса, и последующего сна каждые X секунд? Если нет, то что было бы наиболее эффективным способом сделать это?

Ответы [ 3 ]

3 голосов
/ 28 апреля 2010

В настоящее время вы должны опросить файловую систему, как вы упомянули. В Java 7 должно быть уведомлений файловой системы , поэтому в какой-то момент это станет легче.

1 голос
/ 28 апреля 2010

Если та же программа выполняет создание файла в качестве опроса, вы могли бы вместо этого иметь логику, которая создает файл, уведомить часть программы с помощью Object.notify (). Общее описание механизмов wait () и notify / notifyAll () можно найти здесь: http://java.sun.com/docs/books/tutorial/essential/concurrency/guardmeth.html

0 голосов
/ 28 апреля 2010

Вы можете попробовать JPoller , чтобы опросить изменения файла.

Если вы работаете в Windows, вы можете получать уведомления об изменении каталога, см. Получение уведомлений об изменении каталога . Конечно, это не кроссплатформенность и потребует использования JNA или аналогичного собственного моста. Фактически, JNA-корректоры, такие как class, класс FileMonitor (в загрузке), который использует уведомление об изменении файла базовой платформы.

Если вы просматриваете несколько файлов или меньше, то, конечно, опрос вряд ли будет проблемой производительности, это просто не «приятное на ощупь» решение - но не так уж и плохо, чтобы оправдать боль не чистых Решение Java. С другой стороны, для мониторинга каталогов, содержащих тысячи файлов, прямое оповещение ОС будет невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...