java使用WatchService監(jiān)控文件夾示例
更新時間:2017年02月16日 10:06:36 作者:DrJasonZhang
本篇文章主要介紹了java使用WatchService監(jiān)控文件夾示例的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
通過java7提供的WatchService API 實現(xiàn)對文件夾的監(jiān)控
package service; import config.Config; import java.io.IOException; import java.nio.file.*; import java.util.List; import java.util.concurrent.TimeUnit; public class WatchDirService { private WatchService watchService; private boolean notDone = true; public WatchDirService(String dirPath){ init(dirPath); } private void init(String dirPath) { Path path = Paths.get(dirPath); try { watchService = FileSystems.getDefault().newWatchService(); //創(chuàng)建watchService path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE); //注冊需要監(jiān)控的事件,ENTRY_CREATE 文件創(chuàng)建,ENTRY_MODIFY 文件修改,ENTRY_MODIFY 文件刪除 } catch (IOException e) { e.printStackTrace(); } } public void start(){ System.out.print("watch..."); while (notDone){ try { WatchKey watchKey = watchService.poll(Config.POLL_TIME_OUT, TimeUnit.SECONDS); //此處將處于等待狀態(tài),等待檢測到文件夾下得文件發(fā)生改變,返回WatchKey對象 if(watchKey != null){ List<WatchEvent<?>> events = watchKey.pollEvents(); //獲取所有得事件 for (WatchEvent event : events){ WatchEvent.Kind<?> kind = event.kind(); if (kind == StandardWatchEventKinds.OVERFLOW){ //當前磁盤不可用 continue; } WatchEvent<Path> ev = event; Path path = ev.context(); if(kind == StandardWatchEventKinds.ENTRY_CREATE){ System.out.println("create " + path.getFileName()); }else if(kind == StandardWatchEventKinds.ENTRY_MODIFY){ System.out.println("modify " + path.getFileName()); }else if(kind == StandardWatchEventKinds.ENTRY_DELETE){ System.out.println("delete " + path.getFileName()); } } if(!watchKey.reset()){ //已經關閉了進程 System.out.println("exit watch server"); break; } } } catch (InterruptedException e) { e.printStackTrace(); return; } } } }
就是這么簡單就可以對一個文件夾進行監(jiān)控了。
完整帶碼地址:WatchServerDemo_jb51.rar
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Java動態(tài)修改配置即時生效的方式WatchService
- 使用maven構建java9 service實例詳解
- Java ExecutorService四種線程池使用詳解
- Java編程Webservice指定超時時間代碼詳解
- Java使用WatchService監(jiān)控文件內容變化的示例
- Java客戶端調用.NET的WebService實例
- java WSDL接口webService實現(xiàn)方式
- 詳解Java利用ExecutorService實現(xiàn)同步執(zhí)行大量線程
- java中Executor,ExecutorService,ThreadPoolExecutor詳解
- Java WebService 簡單實例(附實例代碼)
- Java service層獲取HttpServletRequest工具類的方法
相關文章
SpringBoot通過@MatrixVariable進行傳參詳解
這篇文章主要介紹了SpringBoot使用@MatrixVariable傳參,文章圍繞@MatrixVariable展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06常用Maven庫,鏡像庫及maven/gradle配置(小結)
這篇文章主要介紹了常用Maven庫,鏡像庫及maven/gradle配置(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12springcloud連接遠程nacos失敗顯示localhost服務連接失敗的問題解決
這篇文章主要介紹了springcloud連接遠程nacos失敗顯示localhost服務連接失敗的問題解決,文中有詳細的代碼示例供大家參考,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-03-03