本文主要是介绍common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
fileObserver.startWatching();其中ResolveFileObserver 是实现FileObserver类复写startWatching方法,其中startWatching通过堆栈进行实现例如:
@Overridepublic void startWatching(){if (mObservers != null)return;mObservers = new ArrayList<SingleFileObserver>();Stack<String> stack = new Stack<String>();stack.push(mPath);while (!stack.isEmpty()){String parent = stack.pop();mObservers.add(new SingleFileObserver(parent, mMask));File path = new File(parent);File[] files = path.listFiles();if (null == files)continue;for (File f : files){if (f.isDirectory() && !f.getName().equals(".") && !f.getName().equals("..")){stack.push(f.getPath());}}}for (SingleFileObserver sfo : mObservers){sfo.startWatching();}}@Overridepublic void stopWatching(){if (mObservers == null)return;for (SingleFileObserver sfo : mObservers){sfo.stopWatching();}mObservers.clear();mObservers = null;}
再复写@Override
public void onEvent(int event, String path)这个方法,通过event参数进行判断。满足条件进行处理例如:
@Overridepublic void onEvent(int event, String path){String fileName = path.substring(path.lastIndexOf("/") + 1);switch (event){case FileObserver.CLOSE_WRITE:if ("条件判断是否成立")//处理相应的逻辑break;}}
上面的为什么用栈进行监听调用?因为文件监听只能监听其当前目录,子目录是监听不到的,比如/data1/data2.如果你在data1中监听了文件,data2如果变化了是观察不到的,具体的看看代码的实现就明白了。。。
整个监听例子见我其他博客的完整例子。接下来是实现另一个文件监听功能,是common-io-2.0的新功能之文件监控FileAlteration。
在common-io-2.0的新功能初看了下加入了文件监控功能,可能有的时候会遇到。
这部分内容主要有3大类,一个是Monitor类,字面意思就是监控类咯;一个是Observer类,字面意思嘛观察类,用来观察文件的类;一个是listener类,提供各种监听时候的事件处理。
就简单点吧,先看了下这几个类的构造函数,非常简单。那我就继承一下好了:
- package com.zhubin.FileListener;
- import java.io.File;
- import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
- import org.apache.commons.io.monitor.FileAlterationObserver;
- public class FileListenerAdaptor extends FileAlterationListenerAdaptor{
- @Override
- public void onStart(FileAlterationObserver arg0) {
- System.out.println("begin listening!");
- super.onStart(arg0);
- }
这篇关于common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!