Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Linux上为目录中的文件编写事件侦听器_C#_Java_Python_Linux_Event Handling - Fatal编程技术网

C# 在Linux上为目录中的文件编写事件侦听器

C# 在Linux上为目录中的文件编写事件侦听器,c#,java,python,linux,event-handling,C#,Java,Python,Linux,Event Handling,在Ubuntu linux上,当您观看flash视频时,它会临时保存在/tmp中作为flv文件,而视频会缓冲。我使用vlc直接播放这些文件 目前,我已经编写了一个快捷方式脚本,单击该快捷方式可以直接扫描并打开/tmp中使用vlc的最新文件 但是,我想编写一个Java应用程序,它将持续监视这个/tmp目录中的任何新flv文件,并在vlc中自动打开它。我知道我可以使用Runtime.exec()打开带有flv文件的VLC应用程序。但是,我不想运行while(true)循环(使用sleep)来扫描文件

在Ubuntu linux上,当您观看flash视频时,它会临时保存在/tmp中作为flv文件,而视频会缓冲。我使用vlc直接播放这些文件

目前,我已经编写了一个快捷方式脚本,单击该快捷方式可以直接扫描并打开/tmp中使用vlc的最新文件

但是,我想编写一个Java应用程序,它将持续监视这个/tmp目录中的任何新flv文件,并在vlc中自动打开它。我知道我可以使用Runtime.exec()打开带有flv文件的VLC应用程序。但是,我不想运行while(true)循环(使用sleep)来扫描文件

如何在Linux上使用事件处理(Java或任何其他语言)来完成此任务

编辑:
我还想知道Java是否是实现这一点的正确方法。正如下面有人建议的那样,Python和QT似乎更合适

你看到了吗?它是一个Java库,使用特定于操作系统的代码来侦听文件系统事件

但是,我不排除轮询文件系统,除非您正在处理大量的文件/目录。

您看到了吗?它是一个Java库,使用特定于操作系统的代码来侦听文件系统事件


但是,我不排除轮询文件系统,除非您处理大量的文件/目录。

我建议使用Qt和Python

我以前在类似的项目中使用过PyQt。Qt有一个文件系统监视程序,用于监视目录和文件的更新,这些更新会触发事件,您可以捕获并执行一些操作(如OpenVLC)

如果你只是想一直在后台运行,Qt还有一个功能,可以让你在系统托盘中运行你的程序。这就是我所做的,只是添加了一两个菜单来进行修改


我建议使用Qt和Python

我以前在类似的项目中使用过PyQt。Qt有一个文件系统监视程序,用于监视目录和文件的更新,这些更新会触发事件,您可以捕获并执行一些操作(如OpenVLC)

如果你只是想一直在后台运行,Qt还有一个功能,可以让你在系统托盘中运行你的程序。这就是我所做的,只是添加了一两个菜单来进行修改


对于Python,请使用pyinotify:。它是一个简单、独立的库;这不需要难看的Qt依赖关系。

对于Python,使用pyinotify:。它是一个简单、独立的库;这不需要难看的Qt依赖关系。

对于Python,你可以试试这个,我发现它比pyinotify简单。

对于Python,你可以试试这个,我发现它比pyinotify简单。

在Linux中有一种叫做FAM(文件更改监视器)的东西,它比睡眠/轮询的东西做得更好。 还有一个python包:


与QT相比,它的依赖性可能要小得多。

在Linux中,有一种叫做FAM(文件更改监视器)的东西,它比sleep/poll做得更好。 还有一个python包:


与QT相比,它的依赖性可能要小得多。

谢谢Brendan。我有PyQt的最低经验,但我有兴趣尝试一下。根据您的经验,是否有任何资源/书籍可供推荐?仅用于监视文件事件的Qt依赖性将非常糟糕。谢谢Brendan。我有PyQt的最低经验,但我有兴趣尝试一下。根据您的经验,是否有任何资源/书籍值得推荐?仅用于监视文件事件的Qt依赖性将非常糟糕。我一定会看一看。顺便问一下,通过while(true)进行投票不被认为是一种不好的做法吗?只有六个文件需要监视。我还想知道Java是否适合用于此目的。我认为轮询可以是一种实用的解决方案,只要您不太努力地轮询而影响磁盘性能。每秒轮询(比如)一次不会对您的系统产生任何明显的影响。如果/tmp中碰巧有很多其他文件,就会产生影响。您能确定有多少个文件?当您有数千个文件时(可能是1000个文件中的10个),我希望性能会下降。我一定会看一看。顺便问一下,通过while(true)进行投票不被认为是一种不好的做法吗?只有六个文件需要监视。我还想知道Java是否适合用于此目的。我认为轮询可以是一种实用的解决方案,只要您不太努力地轮询而影响磁盘性能。每秒轮询(比如)一次不会对您的系统产生任何明显的影响。如果/tmp中碰巧有很多其他文件,就会产生影响。您能确定有多少个文件?当您有数千个文件(可能是1000个文件中的10个)时,我希望性能会下降。