我有一个简单的scrirpt看这样的文件统计数据:
我运行fs.stat,比方说,每2秒一次,并查找结果的变化。 其他应用程序可以随时写入文件。当它发生时以及何时发生,我看到尺寸发生了变化,但是mtime保持不变。
ENV: Windows10 / NodeJS v8.10.0
脚本示例:
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没有关闭(正确)日志文件?