您的位置:首页 > 编程语言 > Java开发

UBuntu9.10开发Java程序拦截inotify文件事件

2012-03-09 00:00 330 查看
从这里获得最新版本http://code.google.com/p/inotify-java/,并参考下面的安装手册

注意,当前版本号是0.1,所以[version]都要换成0.1
并且还需要设置环境变量JAVA_HOME,可以只在编译用的终端设置
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15/

要先安装过ant,然后进入解压后的目录,使用如下命令编译:
chenshu@chenshu-desktop:~/work/inotify-java-0.1$ ant release -Dversion=0.1

然后拷贝已经编译出来的动态库到/usr/lib目录中
sudo cp build/native/libinotify-java.so /usr/lib

sudo cp dist/inotify-java-0.1.jar /usr/share/java/

配置NetBeans6.7.1,添加一个inotify库,如下图设置:



环境已经准备好了。

现在新建一个JavaApplication工程inotifyTest,然后将inotify库加入。示例代码如下:

package inotifytest;

import com.den_4.inotify_java.Constants;

import com.den_4.inotify_java.EventQueueFull;

import com.den_4.inotify_java.Inotify;

import com.den_4.inotify_java.InotifyEvent;

import com.den_4.inotify_java.InotifyEventListener;

import com.den_4.inotify_java.InsufficientKernelMemoryException;

import com.den_4.inotify_java.SystemLimitException;

import com.den_4.inotify_java.UserLimitException;

public class Main {

public static void main(String[] args){

try {

Inotify i = new Inotify();

InotifyEventListener e = new InotifyEventListener() {

@Override

public void filesystemEventOccurred(InotifyEvent e) {

System.out.println("inotify event occurred!");

System.out.println("Name:"+e.getName());

System.out.println("Mask:"+Integer.toHexString(e.getMask()));

System.out.println("Mask:"+e.toString());

}

@Override

public void queueFull(EventQueueFull e) {

System.out.println("inotify event queue: " + e.getSource() +

" is full!");

}

};

i.addInotifyEventListener(e);

i.addWatch("/home/chenshu/", Constants.IN_ALL_EVENTS);

} catch (UnsatisfiedLinkError e) {

System.err.println("unsatisfied link error");

} catch (UserLimitException e) {

System.err.println("user limit exception");

} catch (SystemLimitException e) {

System.err.println("system limit exception");

} catch (InsufficientKernelMemoryException e) {

System.err.println("insufficient kernel memory exception");

}

}

}

注意,该程序无法自动结束。关掉NetBeans或者kill的方式可以结束掉。

$(document).ready(function(){dp.SyntaxHighlighter.HighlightAll('code');});

原文链接:
http://blog.csdn.net/sheismylife/article/details/4861469
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: