为什么NodeJS fs.stat()在文件发生变化时没有更新file.mtime?

时间:2018-04-28 17:37:32

标签: javascript node.js filesystems ntfs

我有一个简单的scrirpt看这样的文件统计数据:

我运行fs.stat,比方说,每2秒一次,并查找结果的变化。 其他应用程序可以随时写入文件。当它发生时以及何时发生,我看到尺寸发生了变化,但是mtime保持不变。

ENV: Windows10 / NodeJS v8.10.0

  • 我尝试了fs.watch,但遇到了相同/类似的问题 - 没有小改动的事件。
  • 如果我使用sublime / notepad ++打开日志并手动添加新行并保存 - 它可以工作并更新日期

脚本示例:

fs.stat(filename, (err, stat) => {
if (err) return console.log(err);
if (files[f]) {
    if (files[f].mtime !== stat.mtimeMs || files[f].size !== stat.size) {
        files[f].mtime = stat.mtimeMs;
        files[f].size = stat.size;
        files[f].changed = true;
    }
} else {
    let jnum = j_num(f);
    files[f] = {
        f: f,
        jnum: jnum,
        mtime: stat.mtimeMs,
        size: stat.size,
        proceed: 0,
        changed: true,
    };
}
console.log(files[f].f, files[f].size, files[f].mtime);
});

输出示例:

file                size  mtime

180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23265 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038
180428200919.01.log 23348 1524935545774.6038 << mtime the same
180428200919.01.log 23431 1524935545774.6038 << size changed
180428200919.01.log 23431 1524935545774.6038
180428200919.01.log 23431 1524935545774.6038

任何人都可以解释这种行为以及如何避免它吗? 可能是因为writer-app没有关闭(正确)日志文件?

0 个答案:

没有答案