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

时间:2016-08-30 14:02:35

标签: javascript node.js filesystems

我想发送到客户端文件名和文件创建日期,我试图使用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;

4 个答案:

答案 0 :(得分:3)

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

检查birthtime API详细信息here

答案 1 :(得分:1)

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

不幸的是,你是否可以从node.js访问整个stat结构是一个不同的鱼。但至少你可以弄清楚你的操作系统是否支持它并从那里开始。

答案 2 :(得分:0)

如果有人在此之后偶然发现了这一点,那么从Node v0.12.0开始,请使用:

fs.stat(path, callback)

回调有两个arr err&统计。 Stats对象具有属性

birthtime

这是创建日期。

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

答案 3 :(得分:0)

出生时间是文件创建日期时间。此脚本将文件创建日期和文件名显示为 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'