2012-02-24 1 views
0

Я использую 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.Проблемы с Watch Service API класса nio2

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

ответ

1

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

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

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