如何在nodejs中使用文件系统获取文件创建日期

How to get file created date using file System in nodejs?

本文关键字:文件系统 获取 文件 创建日期 nodejs      更新时间:2023-09-26

我想发送到客户端文件名和文件创建日期,我尝试使用fs。stat,提供出生时间,但我没有看到文件名在那里,所以我的问题,是出生时间是文件创建日期?

如何发送创建为json的文件名和日期?

app.js

var readDirectory = require('./readDirectory');
app.get('/logs',function(req,res){
    readDirectory.readDirectory(function(logFiles){
        res.json(logFiles);
    });
});

readDirectory.js

var fs = require('fs');
var path = './logs/ditLogs'
function readDirectory(callback){
    fs.stat(path, function (err,stats) {
        console.log('STATS',stats);
        callback(stats);
    });
}
exports.readDirectory = readDirectory;

如果有人在这之后绊倒了,从Node v0.12.0开始使用这个:

fs.stat(path, callback)

其中callback有两个参数err &统计数据。Stats对象具有属性

birthtime

表示创建日期。

链接到节点api文档https://nodejs.org/api/fs.html#fs_class_fs_stats

Node v0.12.0中,是birthtime是文件创建时间

查看Node.js API详细信息此处

是否可以获取文件创建时间取决于操作系统和文件系统。传统POSIX只定义ctime,这是(相当令人困惑的)索引节点修改日期,而不是其他人提到的创建日期。但是,在某些操作系统上,您可以获得st_birthtimespec或st_birthtime,这是一个真正的"创建"时间。您需要检查主机操作系统上的sys/stat.h,看看是否有可用的。

不幸的是,是否可以从node.js访问整个状态结构是另一回事。但至少你可以弄清楚你的操作系统是否支持它,然后从那里开始。

出生时间为文件创建日期时间。这个脚本显示文件的创建日期和文件名为json。

    const fs = require("fs");
    fs.stat(
      __filename,
      function (err, stat) {
       if (err) {
        return console.log("err",err, stat);
       } else {
        console.log("stat", stat);
    
console.log( '{"createtime":"' + stat.birthtime.toISOString().replace(/[:'.T]/g,"-").replace(/[^0-9'-]*/g,"") +'","filename":"' + __filename + '"}' );
        }
        return;
      }
    );
结果:

Stats {
  dev: 3767638129,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: 4096,
  ino: 209135907696022600,
  size: 379,
  blocks: 0,
  atimeMs: 1622023360041.0825,
  mtimeMs: 1622023358411.5193,
  ctimeMs: 1622023358411.5193,
  birthtimeMs: 1621956288957.1938,
  atime: 2021-05-26T10:02:40.041Z,
  mtime: 2021-05-26T10:02:38.412Z,
  ctime: 2021-05-26T10:02:38.412Z,
  birthtime: 2021-05-25T15:24:48.957Z
}
{"createtime":"2021-05-25-15-24-48-957",
 "filename":"D:'js'filecreatedatetest.js"}

文件名是fs.stat()的第一个参数,在你的代码中这个值是var path = './logs/ditLogs'