我想创建一个监控同一域上的文本文件的网站,并在文本文件更改时自动更新段落。关于我可能使用的什么好主意?
我觉得有一个运行循环的JavaScript文件监视文件并不是一个好习惯,所以任何其他建议都会很棒!
答案 0 :(得分:0)
如果您在客户端上执行此操作,则无法自动访问用户文件系统。您需要使用对话框打开文件,选择文件。
获得文件后,您可以使用文件的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 File System模块核心内置的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
是上述代码段中的修改时间。与上面针对客户端的解决方案不同,此功能会在实施后自动触发文件更改。
您可以阅读有关fs.watchFile
here.