亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java實現實時監控目錄下文件變化的方法

2024-07-14 08:43:34
字體:
來源:轉載
供稿:網友

一、commons-io方法

1、使用Commons-io的monitor下的相關類可以處理對文件進行監控,它采用的是觀察者模式來實現的

  • (1)可以監控文件夾的創建、刪除和修改
  • (2)可以監控文件的創建、刪除和修改
  • (3)采用的是觀察者模式來實現的
  • (4)采用線程去定時去刷新檢測文件的變化情況

2、引入commons-io包,需要2.0以上。

<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency>  <groupId>commons-io</groupId>  <artifactId>commons-io</artifactId>  <version>2.6</version></dependency>

3、編寫繼承FileAlterationListenerAdaptor的類FileListener。

import java.io.File;import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;import org.apache.commons.io.monitor.FileAlterationObserver;import org.apache.log4j.Logger;/** * 文件變化監聽器 * 在Apache的Commons-IO中有關于文件的監控功能的代碼. 文件監控的原理如下: * 由文件監控類FileAlterationMonitor中的線程不停的掃描文件觀察器FileAlterationObserver, * 如果有文件的變化,則根據相關的文件比較器,判斷文件時新增,還是刪除,還是更改。(默認為1000毫秒執行一次掃描) */public class FileListener extends FileAlterationListenerAdaptor {  private Logger log = Logger.getLogger(FileListener.class);  /**   * 文件創建執行   */  public void onFileCreate(File file) {    log.info("[新建]:" + file.getAbsolutePath());  }  /**   * 文件創建修改   */  public void onFileChange(File file) {    log.info("[修改]:" + file.getAbsolutePath());  }  /**   * 文件刪除   */  public void onFileDelete(File file) {    log.info("[刪除]:" + file.getAbsolutePath());  }  /**   * 目錄創建   */  public void onDirectoryCreate(File directory) {    log.info("[新建]:" + directory.getAbsolutePath());  }  /**   * 目錄修改   */  public void onDirectoryChange(File directory) {    log.info("[修改]:" + directory.getAbsolutePath());  }  /**   * 目錄刪除   */  public void onDirectoryDelete(File directory) {    log.info("[刪除]:" + directory.getAbsolutePath());  }  public void onStart(FileAlterationObserver observer) {    // TODO Auto-generated method stub    super.onStart(observer);  }  public void onStop(FileAlterationObserver observer) {    // TODO Auto-generated method stub    super.onStop(observer);  }}

4、實現main方法

public static void main(String[] args) throws Exception{    // 監控目錄    String rootDir = "D://apache-tomcat-7.0.78";    // 輪詢間隔 5 秒    long interval = TimeUnit.SECONDS.toMillis(1);    // 創建過濾器    IOFileFilter directories = FileFilterUtils.and(        FileFilterUtils.directoryFileFilter(),        HiddenFileFilter.VISIBLE);    IOFileFilter files    = FileFilterUtils.and(        FileFilterUtils.fileFileFilter(),        FileFilterUtils.suffixFileFilter(".txt"));    IOFileFilter filter = FileFilterUtils.or(directories, files);    // 使用過濾器    FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter);    //不使用過濾器    //FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir));    observer.addListener(new FileListener());    //創建文件變化監聽器    FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);    // 開始監控    monitor.start();  }

二、使用JDK7提供的WatchService

public static void main(String[] a) {    final Path path = Paths.get("D://apache-tomcat-7.0.78");    try (WatchService watchService = FileSystems.getDefault().newWatchService()) {      //給path路徑加上文件觀察服務      path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,          StandardWatchEventKinds.ENTRY_MODIFY,          StandardWatchEventKinds.ENTRY_DELETE);      while (true) {        final WatchKey key = watchService.take();        for (WatchEvent<?> watchEvent : key.pollEvents()) {          final WatchEvent.Kind<?> kind = watchEvent.kind();          if (kind == StandardWatchEventKinds.OVERFLOW) {            continue;          }          //創建事件          if (kind == StandardWatchEventKinds.ENTRY_CREATE) {            System.out.println("[新建]");          }          //修改事件          if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {            System.out.println("修改]");          }          //刪除事件          if (kind == StandardWatchEventKinds.ENTRY_DELETE) {            System.out.println("[刪除]");          }          // get the filename for the event          final WatchEvent<Path> watchEventPath = (WatchEvent<Path>) watchEvent;          final Path filename = watchEventPath.context();          // print it out          System.out.println(kind + " -> " + filename);        }        boolean valid = key.reset();        if (!valid) {          break;        }      }    } catch (IOException | InterruptedException ex) {      System.err.println(ex);    }  }

三、以上方法都可以實現對相應文件夾得文件監控,但是在使用jdk7提供的API時,會出現些許問題。

  • (1)當文件修改時,會被調用兩次,即輸出兩個相同的修改。
  • (2)不能對其子文件夾進行監控,只能提示目錄被修改。
  • (3)無法對文件類型進行過濾。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线亚洲午夜片av大片| 午夜欧美不卡精品aaaaa| 国产精品免费久久久久影院| 国产精品成人aaaaa网站| 亚洲一区二区免费| 91精品国产91久久久久久最新| 欧美极品美女视频网站在线观看免费| 久久视频这里只有精品| 国产精品高清免费在线观看| 亚洲а∨天堂久久精品喷水| 亚洲精品视频久久| 国产欧美精品一区二区| 亚洲天堂日韩电影| 在线观看精品自拍私拍| 欧美在线视频观看免费网站| 国产欧美亚洲视频| 日韩视频在线一区| 国产精品海角社区在线观看| 成人精品网站在线观看| 欧美日韩色婷婷| 国产精品伦子伦免费视频| 亚洲精品98久久久久久中文字幕| 国产精品久久久久久久美男| 亚洲丝袜一区在线| 欧美成人黄色小视频| 国产99视频在线观看| 日韩免费在线电影| 日韩中文在线观看| 精品亚洲国产成av人片传媒| 国产精品美女视频网站| 精品动漫一区二区三区| 亚洲欧洲美洲在线综合| 日韩亚洲第一页| 91精品啪在线观看麻豆免费| 欧美一区二区三区四区在线| 91精品国产色综合久久不卡98| 欧美一区二区三区精品电影| 欧美日韩精品国产| 亚洲一区中文字幕在线观看| 91在线看www| 亚洲国产精品va在线| 亚洲成人在线网| 国产精品中文字幕在线| 国产精品成人国产乱一区| 午夜精品一区二区三区在线| 欧美日产国产成人免费图片| 热久久免费视频精品| 黄色精品一区二区| 亚洲国产91色在线| 国产亚洲精品日韩| 欧美老女人性视频| 亚洲欧美另类中文字幕| 欧美色另类天堂2015| 国产日本欧美一区二区三区在线| 国产日韩欧美自拍| 日韩美女毛茸茸| 中文字幕精品一区久久久久| 亚洲免费伊人电影在线观看av| 欧美激情va永久在线播放| 91九色国产社区在线观看| 亚洲精品www久久久| 久久精品成人欧美大片| 欧美日本精品在线| 不卡av电影院| 久久视频在线免费观看| 久久精品99无色码中文字幕| 国产亚洲欧美另类中文| 91最新国产视频| 国产小视频国产精品| 亚洲色图50p| 91av视频在线免费观看| 亚洲男女自偷自拍图片另类| 少妇高潮久久久久久潘金莲| 欧洲永久精品大片ww免费漫画| 日韩国产欧美精品在线| 亚洲精品第一页| 在线亚洲欧美视频| 91国在线精品国内播放| 欧美精品www在线观看| 日韩在线视频国产| 国产日韩在线视频| 日韩成人在线视频| 国产免费一区二区三区在线观看| 一本一道久久a久久精品逆3p| xvideos国产精品| 欧美日韩国产第一页| 日韩av在线网址| 欧美在线免费视频| 日本一区二区在线免费播放| 2020欧美日韩在线视频| 最近更新的2019中文字幕| 日本高清不卡在线| 最近2019中文字幕第三页视频| 亚洲激情国产精品| 中文字幕在线亚洲| 国产精品久久久久久av福利软件| 亚洲欧美国产一区二区三区| 91精品久久久久久久久久另类| 国产婷婷成人久久av免费高清| 久久久久久成人精品| 亚洲精品wwww| 91香蕉国产在线观看| 国产精品久久久久久久美男| 亚洲精品福利资源站| 日韩亚洲成人av在线| 亚洲欧洲高清在线| 久久亚洲国产精品成人av秋霞| 精品久久久国产精品999| 国产z一区二区三区| 日韩成人在线视频网站| 美日韩精品免费视频| 国产成人综合av| 欧美视频在线观看免费网址| 欧洲精品久久久| 国产美女久久精品| 日韩欧美亚洲范冰冰与中字| 久久艳片www.17c.com| 国产狼人综合免费视频| 亚洲一区制服诱惑| 国产精品你懂得| 欧美日韩国产成人在线观看| 黄网站色欧美视频| 精品国产成人av| 欧美影院在线播放| 91精品中文在线| 狠狠躁夜夜躁人人躁婷婷91| 亚洲精品成a人在线观看| 中文字幕亚洲欧美日韩在线不卡| 精品视频在线观看日韩| 亚洲香蕉伊综合在人在线视看| 精品国产依人香蕉在线精品| 日韩av一区二区在线| 国产a∨精品一区二区三区不卡| 成人免费网站在线观看| 国产精品久久久久av| 国内精久久久久久久久久人| 欧美洲成人男女午夜视频| 国产成人91久久精品| 麻豆乱码国产一区二区三区| 精品久久久久久| 日韩精品一二三四区| 狠狠躁18三区二区一区| 成人免费视频网| 国产做受高潮69| www.欧美视频| 久久精品视频99| 91九色国产在线| 日韩成人在线电影网| 成人激情视频在线观看| 少妇av一区二区三区| 97免费视频在线| 亚洲精品久久久久久久久久久| 在线观看中文字幕亚洲| 国产精品露脸av在线| 亚洲一区二区久久久久久| 久久精视频免费在线久久完整在线看| 97**国产露脸精品国产| 中日韩午夜理伦电影免费| 国产精品久久久久久久久久久新郎| 日本精品视频在线观看| 午夜欧美不卡精品aaaaa| 最近2019中文字幕mv免费看| 91精品国产色综合久久不卡98| 国产精品爽爽爽爽爽爽在线观看|