java文件监听器_【JavaSE】文件监听器 WatchService

importjava.io.IOException;import java.nio.file.*;importjava.util.List;public class Watcher implementsRunnable{privateString filePath;privateWatchService watchService;publicWatcher(String filePath) {this.filePath =filePath;

}

@Overridepublic voidrun() {try{this.watchService =FileSystems.getDefault().newWatchService();

Path path=Paths.get(filePath);

path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.OVERFLOW);

printLog("开始监听文件夹:{}", filePath);

WatchKey key;while ((key=watchService.take()) != null) {

List> watchEvents =key.pollEvents();for(WatchEvent>watchEvent : watchEvents) {

WatchEvent.Kind> kind =watchEvent.kind();if (kind ==StandardWatchEventKinds.ENTRY_CREATE) {

printLog("新建文件: {}, 次数: {}", watchEvent.context(), watchEvent.count());

}else if (kind ==StandardWatchEventKinds.ENTRY_DELETE) {

printLog("删除文件: {}, 次数: {}", watchEvent.context(), watchEvent.count());

}else if (kind ==StandardWatchEventKinds.ENTRY_MODIFY) {

printLog("修改文件: {}, 次数: {}", watchEvent.context(), watchEvent.count());

}else if (kind ==StandardWatchEventKinds.OVERFLOW) {

printLog("overflow: {}, 次数: {}", watchEvent.context(), watchEvent.count());

}

}

key.reset();

}

}catch(IOException e) {

System.out.println("获取监听器失败");

}catch(InterruptedException e) {

e.printStackTrace();

}

}private voidprintLog(String format, Object...objects) {

format= format.replaceAll("\\{\\}", "%s");

System.out.println(String.format(format,objects));

}public static voidmain(String[] args) {new Thread(new Watcher("D:\\tmp")).start();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值