Tôi đang sử dụng watchKey
để nghe cho một sự thay đổi tập tin trong một thư mục cụ thể.thư mục con Monitor với Java xem dịch vụ
Path _directotyToWatch = Paths.get("E:/Raja");
WatchService watcherSvc = FileSystems.getDefault().newWatchService();
WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
while (true) {
watchKey=watcherSvc.take();
for (WatchEvent<?> event: watchKey.pollEvents()) {
WatchEvent<Path> watchEvent = castEvent(event);
System.out.println(event.kind().name().toString() + " " + _directotyToWatch.resolve(watchEvent.context()));
watchKey.reset();
}
}
Nó làm việc tốt cho tôi. Nếu tôi sửa đổi một tập tin trong thư mục raja nó mang lại cho tôi tên tập tin với đường dẫn. Tuy nhiên, khi tôi đặt một số tập tin trong thư mục con như "E:/Raja/Test", nó mang lại cho tôi chỉ là con đường mà tôi đặt nó, không phải là tên tập tin.
Làm thế nào để có được tên tập tin?
đây là bản sao của http://stackoverflow.com/questions/5608234/how-can-i-watch-subdirectory-for-changes-with-watch-service-java –