是否有任何方法可以获得节点js的文件夹统计信息?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (90)

是否有任何方式,我可以得到节点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)代码中的a获取的文件夹(在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 
}

根据文档birthtime可能是也可能不是创建日期(因操作系统而异)。 ctime不是创建时间(它的文件节点更改时间,这是节点参数,而不是文件内容)。

从文档:

出生时间“出生时间” - 文件创建时间。创建文件时设置一次。在没有出生时间的文件系统上,该字段可以改为包含ctime或1970-01-01T00:00Z(即,unix纪元时间戳0)。在这种情况下,该值可能大于atime或mtime。在Darwin和其他FreeBSD变体上,还设置是否使用utimes(2)系统调用将atime显式设置为比当前出生时更早的值。

这似乎是一种说法,它只是一个大混乱,因平台而异。所以,如果你想将它用于有用的东西,你可能不得不测试你的平台,看看它是否提供了你真正需要的东西。

相关讨论:

在节点中获取文件创建日期

是否仍然没有Linux内核接口来获取文件创建日期?

如何使用fs模块获取文件创建日期?

用户回答回答于

回调fs.stat应该是形式(err, stats) => {}。您正在打印错误 - 所以如果没有错误,您将无法获得任何输出。

作为一个注释,fs.stat将适用于文件和目录,因为它们在底层Node.js运行时中或多或少是相同的数据结构。

扫码关注云+社区

领取腾讯云代金券