Проблемы с API службы часов класса nio2 - PullRequest
0 голосов
/ 24 февраля 2012

Я использую Watch Service API класса nio.2 для наблюдения за конкретным каталогом в моем проекте (платформа ОС Ubuntu 11.10).всякий раз, когда вносится изменение, например, если в отслеживаемый каталог добавляется новый файл с именем abc.json, он сначала запускает событие CREATED, а затем сразу же запускает событие MODIFIED.Я узнал, что это происходит из-за того, что ОС сначала создает 0-байтовый файл, а затем модифицирует его.Какие изменения следует внести в код, указанный в http://java.dzone.com/news/how-watch-file-system-changes, чтобы запустить только событие CREATE, а не событие MODIFIED.

Во-вторых, когда происходит событие MODIFY, event.context ().нанизывать();метод выдает что-то вроде этого .goutputstream-N2Z89V вместо имени файла, заданного событием CREATED или DELETED.Как я могу получить имя файла, который изменяется?

1 Ответ

0 голосов
/ 10 сентября 2012

Если вам нужно выполнить какой-то процесс с данными, то лучше обработать событие Modify, потому что в момент создания файла нулевой байт (пустой файл).

Попробуйте получить имя файла

Path _directoryToWatch;
String path = _directoryToWatch.resolve(watchEvent.context()).toString();
...