Language agnostic 监视修改算法的文件

Language agnostic 监视修改算法的文件,language-agnostic,operating-system,filesystems,Language Agnostic,Operating System,Filesystems,我只是想知道文件监视算法是如何实现的。例如,假设我想在每次修改文件时对其应用过滤器(即搜索/替换字符串),我应该使用什么技术?显然,我可以运行一个无限循环来检查目录中的每个文件是否有修改,但这可能不是很有效。有没有办法直接得到操作系统的通知?为了演示,让我们假设一个*nix操作系统和任何语言(C/Ruby/Python/Java/等等)。在Linux中,有一个子系统会提醒您修改文件。在Linux中,有一个子系统会提醒您修改文件。Linux有,从维基百科链接判断,Windows也有类似的功能,称为

我只是想知道文件监视算法是如何实现的。例如,假设我想在每次修改文件时对其应用过滤器(即搜索/替换字符串),我应该使用什么技术?显然,我可以运行一个无限循环来检查目录中的每个文件是否有修改,但这可能不是很有效。有没有办法直接得到操作系统的通知?为了演示,让我们假设一个*nix操作系统和任何语言(C/Ruby/Python/Java/等等)。

在Linux中,有一个子系统会提醒您修改文件。

在Linux中,有一个子系统会提醒您修改文件。

Linux有,从维基百科链接判断,Windows也有类似的功能,称为“目录管理”。如果没有像inotify这样的东西,你只能轮询..

Linux有,从维基百科链接判断,Windows有类似的东西叫做“目录管理”。如果没有像inotify这样的东西,您只能轮询..

JavaSE 7将作为NIO.2更新的一部分。

JavaSE 7将作为NIO.2更新的一部分。

inotify有一些包装器,可以方便地从高级语言使用。例如,在ruby中,您可以使用:


还有一个例子,但我无法想出一个像上面那样简洁的例子。

有一些包装器需要改进,使其易于从高级语言使用。例如,在ruby中,您可以使用:

还有一个例子,但我无法想出一个像上面这样简洁的例子

notifier = INotify::Notifier.new

# tell it what to watch
notifier.watch("path/to/foo.txt", :modify) {puts "foo.txt was modified!"}
notifier.watch("path/to/bar", :moved_to, :create) do |event|
  puts "#{event.name} is now in path/to/bar!"
end