gpt4 book ai didi

javascript - 有什么方法可以让我用 Node js 获取文件夹统计信息

转载 作者:行者123 更新时间:2023-11-30 14:24:25 26 4
gpt4 key购买 nike

有什么方法可以让我使用 node js 获取文件夹统计信息?我想要 nodejs 中的一个函数,我可以看到文件夹统计信息而不是文件状态这个功能我试过了

fs.stat(path,(error,state)=>{
console.log(state)
})

但它似乎只适用于文件而不适用于文件夹我正在使用 node.js 在服务器端工作我的代码以备不时之需

let folders=fs.readdirSync(path.join(__dirname,'../movies/'));
folders.map((paths)=>{
fs.stat(paths,(f,state)=>{
console.log(f,state)
})

})

上面代码中的文件只有文件夹状态未定义这就是我得到的错误

{ Error: ENOENT: no such file or directory, stat 'C:\Users\DELL N5559\Desktop\stock\Folder'
errno: -4058,
code: 'ENOENT',
syscall: 'stat',
path: 'C:\\Users\\DELL N5559\\Desktop\\stock\\Folder' }
enter code here
enter code here

最佳答案

如果使用得当,fs.stat() 会在该代码中直接从 console.log(stats) 获取有关文件夹的信息(在 Windows 上运行) ,但我相信它也应该适用于其他平台):

const fs = require('fs');

fs.stat("html", function(err, stats) {
if (err) {
console.log(err);
} else {
console.log(stats);
}
});

控制台结果:

Stats {
dev: 2525584580,
mode: 16822,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: undefined,
ino: 281474976939511,
size: 0,
blocks: undefined,
atimeMs: 1517560386009.7627,
mtimeMs: 1517560386009.7627,
ctimeMs: 1517560386009.7627,
birthtimeMs: 1517560385994.137,
atime: 2018-02-02T08:33:06.010Z,
mtime: 2018-02-02T08:33:06.010Z,
ctime: 2018-02-02T08:33:06.010Z,
birthtime: 2018-02-02T08:33:05.994Z
}

根据 the doc , birthtime 可能是也可能不是创建日期(因操作系统而异)。 ctime 不是创建时间(是文件 Node 更改时间,是 Node 参数,不是文件内容)。

来自文档:

birthtime "Birth Time" - Time of file creation. Set once when the file is created. On filesystems where birthtime is not available, this field may instead hold either the ctime or 1970-01-01T00:00Z (ie, unix epoch timestamp 0). This value may be greater than atime or mtime in this case. On Darwin and other FreeBSD variants, also set if the atime is explicitly set to an earlier value than the current birthtime using the utimes(2) system call.

这似乎是一种说法,它只是一团糟,并且因平台而异。因此,如果您想将它用于一些有用的事情,您可能必须测试您的平台,看看它是否提供了您真正需要的东西。

相关讨论:

Get file created date in node

Is there still no Linux kernel interface to get file creation date?

How to get file created date using fs module?


此外,在您的代码中,您没有向 fs.stat() 函数传递足够的路径。 fs.readdir() 仅返回文件/目录名称(没有附加路径),因此当您尝试执行以下操作时:

folders.map((paths)=>{...}

paths 变量只是一个不在当前目录中的文件名。为了使事情正常进行,您必须在调用 fs.stat() 之前将路径放回原处。

let root = path.join(__dirname,'../movies/');
let folders = fs.readdirSync(root);
folders.map(name => {
let fullname = path.join(root, name);
fs.stat(fullname,(err, state) => {
console.log(err, state)
});
});

关于javascript - 有什么方法可以让我用 Node js 获取文件夹统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52175100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com