【发布时间】:2018-01-11 01:31:47
【问题描述】:
我想创建一个网站来监控同一域中的文本文件,并在文本文件更改时自动更新段落。关于我可以使用什么的任何好主意?
我觉得让 JavaScript 文件运行一个循环来监视文件并不是一个好的做法,所以任何其他建议都会很棒!
【问题讨论】:
标签: javascript monitoring
我想创建一个网站来监控同一域中的文本文件,并在文本文件更改时自动更新段落。关于我可以使用什么的任何好主意?
我觉得让 JavaScript 文件运行一个循环来监视文件并不是一个好的做法,所以任何其他建议都会很棒!
【问题讨论】:
标签: javascript monitoring
如果您在客户端上执行此操作,则无法自动访问用户文件系统。您需要使用对话框打开文件,选择文件。
获得文件后,您可以使用文件的lastModified 属性来检查文件的修改时间。如果您存储对该文件的引用,则可以创建一个间隔,如果文件更改,它将检查每个 x。
一个全局变量,用于跟踪最近的文件修改日期(以便稍后我们可以比较它是否不同)
var lastModificationDate = undefined;
然后选择文件时,要获取文件并设置lastModificationDate属性并启动间隔。
file = input.files[0];
lastModificationDate = file.lastModified;
setInterval(checkFile, 500);
您的checkFile 函数如下所示:
var file = input.files && input.files[0];
if (file && lastModificationDate && file.lastModified.getTime() != lastMod.getTime()) {
lastModificationDate = file.lastModified;
// Do something else, file was modified
}
上述功能是使用HTML5 File API实现的,您可以阅读更多关于它的信息here。
对于 Node.js 解决方案:
使用 Nodes 文件系统模块核心内置的 fs.watchFile 功能。
fs.watchFile('message.text', (curr, prev) => {
console.log(`the current mtime is: ${curr.mtime}`);
console.log(`the previous mtime was: ${prev.mtime}`);
});
mtime是上面sn -p中的修改时间。与上面的客户端解决方案不同,此功能一旦实现就会在文件更改时自动触发。
你可以阅读更多关于fs.watchFile here.
【讨论】: