Проблемы с Watch Service API класса nio2

Я использую 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().toString(); Метод выдает что-то вроде этого .goutputstream-N2Z89V вместо имени файла, заданного событием CREATED или DELETED. Как я могу получить имя файла, который был изменен?


person Sagar Virani    schedule 24.02.2012    source источник


Ответы (1)


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

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

Path _directoryToWatch;
String path = _directoryToWatch.resolve(watchEvent.context()).toString();
person Muneeb Nasir    schedule 10.09.2012