java里inotify怎样监听文件

avatar
作者
猴君
阅读量:0

在Java中,你可以使用java.nio.file.WatchService来监听文件系统的变化,包括文件的创建、修改、删除等事件。这是一个比inotify更现代、更灵活的API。

以下是一个简单的示例,演示如何使用WatchService来监听一个目录中的文件变化:

import java.io.IOException; import java.nio.file.*;  public class FileWatcher {     public static void main(String[] args) throws IOException, InterruptedException {         // 指定要监听的目录         Path dirToWatch = Paths.get("path/to/watch");          // 创建一个WatchService实例         WatchService watchService = FileSystems.getDefault().newWatchService();          // 注册要监听的事件类型,这里我们监听ENTRY_CREATE、ENTRY_MODIFY和ENTRY_DELETE事件         dirToWatch.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,                 StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE);          System.out.println("开始监听目录: " + dirToWatch);          while (true) {             // 获取并处理下一个事件             WatchKey key = watchService.take();              for (WatchEvent<?> event : key.pollEvents()) {                 WatchEvent.Kind<?> kind = event.kind();                  // 根据事件类型输出相应信息                 if (kind == StandardWatchEventKinds.OVERFLOW) {                     System.out.println("文件系统事件溢出");                 } else {                     WatchEvent<Path> ev = (WatchEvent<Path>) event;                     Path fileName = ev.context();                      System.out.println("发生事件: " + kind + " - " + fileName);                 }             }              // 重置WatchKey,以便继续接收事件             boolean valid = key.reset();             if (!valid) {                 System.out.println("监听目录已关闭");                 break;             }         }     } } 

path/to/watch替换为你要监听的目录路径。运行此程序后,它将输出该目录中发生的所有文件创建、修改和删除事件。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!