node.js中的最后修改文件日期

时间:2011-09-26 18:30:29

标签: node.js

我正在尝试使用node.js检索服务器上文件的上次修改日期。

我试过

file.lastModified;

file.lastModifiedDate;

两者都是未定义的。

4 个答案:

答案 0 :(得分:96)

你应该使用stat函数:

根据documentation

fs.stat(path, [callback])
  

异步统计(2)。回调得到两个参数(错误,统计),其中stats是fs.Stats对象。它看起来像这样:

{ dev: 2049
, ino: 305352
, mode: 16877
, nlink: 12
, uid: 1000
, gid: 1000
, rdev: 0
, size: 4096
, blksize: 4096
, blocks: 8
, atime: '2009-06-29T11:11:55Z'
, mtime: '2009-06-29T11:11:40Z'
, ctime: '2009-06-29T11:11:40Z' 
}

如您所见,mtime是最后修改时间。

答案 1 :(得分:26)

对于节点v 4.0.0及更高版本:

fs.stat("/dir/file.txt", function(err, stats){
    var mtime = new Date(util.inspect(stats.mtime));
    console.log(mtime);
});

或同步:

var stats = fs.statSync("/dir/file.txt");
var mtime = new Date(util.inspect(stats.mtime));
console.log(mtime);

答案 2 :(得分:2)

在这里,您可以以秒为单位获取文件的上次修改时间。

fs.stat("filename.json", function(err, stats){
    let seconds = (new Date().getTime() - stats.mtime) / 1000;
    console.log(`File modified ${seconds} ago`);
});

输出类似“文件修改300.9秒前”

答案 3 :(得分:2)

只需添加Sandro所说的内容,如果要在不必解析日期或其他任何内容的情况下尽快执行检查,只需获取以毫秒为单位的时间戳(数字),请使用{{1 }}。同步示例:

mtimeMs

同步:

js require('fs').stat('package.json', (err, stat)=>{console.log(stat.mtimeMs)})