修改算法的监视文件

修改算法的监视文件

问题描述:

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

Linux有inotify,从*链接判断,Windows有类似的叫做“目录管理”的东西。没有类似inotify的东西,你只能轮询..

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

JavaSE 7将有File Change Notification作为NIO.2更新的一部分。

有易于使用从高级语言中使用的包装。例如,在Ruby中,你可以做rb-inotify如下:

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 

还有pyinotify但我无法想出尽量精简上面的一个例子。