Java 學習筆記 觀察者模式與適配者模式 監控文件夾
阿新 • • 發佈:2019-04-13
直接 htm ada alter onf 觀察者模式 observe public system
2019.4.12
適配器模式,如果某個類需要實現多個方法,但是開發過程中只需要實現其中的一兩個方法,直接使用該類的適配器類,復寫需要實現的方法即可
觀察者模式:有多個觀察者observe觀察一個主體,當主體發生變化時候,回調觀察者綁定的監聽器的方法
使用觀察者模式,對某個文件夾進行監控
這裏使用第三庫,apache-common-io,裏面有許多有關封裝好的IO類,比如文件的復制,移動刪除等等
1. 先創建一個FileAlterationObserver
FileAlterationObserver(String directoryName, FileFilter fileFilter, IOCase caseSensitivity) //文件過濾器可以使用封裝好的SuffixFileFilter(直接以擴展名就行篩選) //IOCase是一個枚舉類,裏面有三個選項,當前的系統是否區分大小寫,Windows系統文件管理是不區分文件的大小寫的,而linux支持 //INSENSITIVE SENSITIVE SYSTEM //不敏感(不區分大小寫) 敏感的(支持) 按照當前系統,一般使用第三個 FileAlterationObserver txtObserver = new FileAlterationObserver("d:\\dir", new SuffixFileFilter(new String[]{".txt",".java",".html"}), IOCase.SYSTEM);
2. 給觀察者Ovsever添加監聽器
// 適配器模式(設計模式中的一種),其實就對原生接的方法做了默認的空實現 txtObserver.addListener(new FileAlterationListenerAdaptor(){ /** * 文體出現的新文件時,將會執行此方法 * @param file */ @Override public void onFileCreate(File file) { System.out.println("FileMonitor.onFileCreate(): 新文件名:" + file.getName()); try { // 目標文件 File destFile = new File("d:\\txt", file.getName()); // copy file to txt directory FileUtils.copyFile(file, destFile);//FileUtils文件管理類,有移動文件,復制文件等方法 } catch (IOException e) { e.printStackTrace(); } }
3.為主體設置觀察者
try {
//監控,每5s檢測一次
FileAlterationMonitor monitor = new FileAlterationMonitor(5000, txtObserver, mp3Observer);
monitor.start();//FileAlterationMonitor實現了Runnble接口,相當於一個線程,使用start開啟
} catch (Exception e) {
e.printStackTrace();
}
Java 學習筆記 觀察者模式與適配者模式 監控文件夾