在Linux中编程监听目录中文件的事件

1 投票
5 回答
1316 浏览
提问于 2025-04-15 22:30

在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库。

撰写回答