javascript - 为什么 NodeJS fs.stat() 在文件更改时不更新 file.mtime?
问题描述
我有一个简单的脚本来查看文件统计信息,如下所示:
比如说,我每 2 秒运行一次 fs.stat 并寻找结果的变化。其他应用程序可以随时写入文件。Ans 当它发生时,我看到大小发生了变化,但 mtime 保持不变。
环境: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 没有关闭(正确)日志文件吗?
解决方案
推荐阅读
- node.js - Postgres:连接 ECONNREFUSED 127.0.0.1:5432 com Node JS e docker
- java - 从另一个动态创建的 ComboBox 更新在 Javafx 中动态创建的 ComboBox 的内容
- python - 用 Pandas 中的共同值填充系列?
- html - Angular FormControl 开启显示 [object 对象]
- javascript - 如何将脚本包含在 angular.json 中
- php - 使用 PHP cURL 下载和 Excel 文件
- r - 在我向 ggplot 添加标签后突然找不到因素
- javascript - 使用jquery动态确定点击了特定类的哪个按钮
- python-3.x - 索引定位器错误 IndexError:单个位置索引器超出范围
- sql - SQL 选择连接表上的最新记录