在Linux中编程监听目录中文件的事件
在Ubuntu Linux系统上,当你观看Flash视频时,视频会暂时保存在/tmp文件夹里,格式是flv文件,这个过程是视频缓冲的过程。我用VLC播放器直接播放这些文件。
目前,我已经写了一个快捷方式,点击后可以直接扫描/tmp文件夹,打开最新的flv文件,用VLC播放。
但是,我想编写一个Java程序,能够持续监控/tmp目录,自动打开任何新出现的flv文件。我知道可以用Runtime.exec()来启动VLC播放器并打开flv文件。不过,我不想用一个一直循环的方式(加上休眠)来扫描文件。
我该如何利用事件处理(无论是Java还是其他语言)在Linux上完成这个任务呢?
编辑:
我也在想Java是否是合适的选择。有人在下面建议,Python和QT似乎更合适。
5 个回答
1
在Linux系统中,有一个叫做FAM(文件更改监视器)的东西,它比那种简单的等待和轮询的方法要好很多。
还有一个Python的包可以用来实现这个功能,链接在这里:Python FAM
使用这个FAM可能会比依赖其他一些工具,比如QT,要简单得多。
1
你听说过 JNotify 吗?这是一个Java库,它使用特定操作系统的代码来监听文件系统的事件。
不过,我并不完全排除定期检查文件系统的方式,尤其是当你处理的文件或文件夹数量不是特别多的时候。
2
对于Python,可以使用pyinotify这个库:http://trac.dbzteam.org/pyinotify。这个库很简单,独立使用就可以,不需要依赖那些复杂的Qt库。