如何在nodejs中使用文件系统获取文件创建日期?
How to get file created date using file System in nodejs?
我想发送给客户端文件名和文件创建日期,我尝试使用 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
中,是birthtime
是文件创建时间
查看Node.js
API详情here
能否获取文件创建时间取决于OS和文件系统。传统的 POSIX 只定义 ctime,这是(相当混乱)inode 修改日期,而不是创建日期,正如其他人提到的那样。但是,在某些操作系统上,您可以获得 st_birthtimespec 或 st_birthtime,这是真正的 "create" 时间。您需要检查主机操作系统上的 sys/stat.h 以查看可用的内容(如果有的话)。
不幸的是,您是否可以从 node.js 访问整个统计结构是另一回事。但至少你可以弄清楚你的 OS 是否支持它并从那里开始。
如果有人在这段时间之后偶然发现了这个问题,从 Node v0.12.0 开始使用这个:
fs.stat(path, callback)
其中回调有两个参数 err 和 stats。统计对象有 属性
birthtime
这是创建日期。
Link 到节点 api 文档 https://nodejs.org/api/fs.html#fs_class_fs_stats
出生时间是文件创建日期时间。此脚本将文件创建日期和文件名显示为 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'
我想发送给客户端文件名和文件创建日期,我尝试使用 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
中,是birthtime
是文件创建时间
查看Node.js
API详情here
能否获取文件创建时间取决于OS和文件系统。传统的 POSIX 只定义 ctime,这是(相当混乱)inode 修改日期,而不是创建日期,正如其他人提到的那样。但是,在某些操作系统上,您可以获得 st_birthtimespec 或 st_birthtime,这是真正的 "create" 时间。您需要检查主机操作系统上的 sys/stat.h 以查看可用的内容(如果有的话)。
不幸的是,您是否可以从 node.js 访问整个统计结构是另一回事。但至少你可以弄清楚你的 OS 是否支持它并从那里开始。
如果有人在这段时间之后偶然发现了这个问题,从 Node v0.12.0 开始使用这个:
fs.stat(path, callback)
其中回调有两个参数 err 和 stats。统计对象有 属性
birthtime
这是创建日期。
Link 到节点 api 文档 https://nodejs.org/api/fs.html#fs_class_fs_stats
出生时间是文件创建日期时间。此脚本将文件创建日期和文件名显示为 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'