通过 Lua 脚本监控文件

晚上好,

我正在开发一种将机器生成的数据从 csv 表格导入数据库的方法。 我的问题是,是否有一种方法可以使用 Lua 对 csv 文件的更改做出反应。

该文件以以下格式获取一行:

17162H,"801234500001",9/23/2016 12:33:30 PM,"INV"

每次扫描器完成扫描过程时,都会在旧行下添加新行,但是没有直接连接到数据库以触发脚本。

无论更改是通过不同文件大小、文件夹大小(包含文件的文件夹)还是文件信息内的更改(例如最后打开的日期),但由于性能原因,我无法永久打开和读取它。

这也是我第一次在这里提问,所以对我的笨拙方式很抱歉,我会尝试在以后改进自己的表达。

点赞
用户4554496
用户4554496

请看 linotify,它带有 inotify 的 Lua 绑定,看起来应该能解决问题,使用“modify”事件来触发你的脚本。

2016-09-23 12:51:30
用户1442917
用户1442917

如果您需要在 Windows 上运行此程序,可以使用winapi 库,该库支持文件监视器。这是一个示例,展示了它如何在我的一个项目中使用;您需要调用winapi.sleep()来允许时间进行检查并触发。

2016-09-23 14:37:13
用户2328287
用户2328287

我在我的spylog应用程序中使用基于LibUV的变体

用法:

file_monitor(path_to_file, {eol = '\r?\n'}, function(line)
  ...
end)
2016-09-23 14:50:15