在节点js中查找最近创建的目录

时间:2019-07-01 07:13:59

标签: javascript node.js fs ctime

我在路径中有一个文件夹列表。我想在Node js的路径中获取最新创建的文件夹/文件。

代码:

fs.readdir(path,function(err,files){
console.log("files in the path",files);
}

从我想要最新创建的文件列表中

5 个答案:

答案 0 :(得分:2)

您可以使用fs.statSync(path)来检查文件更新时间。

fs.readdir(path,function(err,files){
 files.filter(file => {
const stats = fs.statSync(path)
  return someSpecificDate < stats.mtime
});
})


答案 1 :(得分:0)

const fs = require('fs');

var directory = './';

fs.readdir(directory, (err, files) => {
    if(err) {
        // handle error; e.g., folder didn't exist
    }
    // files refer to array of files in directory iterate through every file and refer the below link for file info operation

      https://code-maven.com/system-information-about-a-file-or-directory-in-nodejs
    for getting file/dir information 
});

答案 2 :(得分:0)

fs具有一个stat函数,该函数接受一个path并返回一个stats对象,该对象包含最后一次访问,修改和创建的时间戳。

文档:https://nodejs.org/api/fs.html#fs_class_fs_stats

示例用法:https://code-maven.com/system-information-about-a-file-or-directory-in-nodejs

您可以访问每个路径的“状态”,将创建的时间戳记与该路径一起添加到数组中,然后按时间戳记降序对数组进行排序。

类似的东西:

const paths = [
  '/path/to/file1',
  '/path/to/file2',
  '/path/to/file3',
  '/path/to/file4',
]

let pathTimestamps = []

// Add path timestamps to the pathTimestamps array as an object containing the path and created timestamp
paths.forEach(path => {
  fs.stat(path, (err, stats) => {
    pathTimestamps.push({ path: path, createdTimestamp: stats.birthtimeMs })
  }
})

// Sort the array by timestamp descending (newest paths first)
pathTimestamps.sort(a, b => {
  b.createdTimestamp - a.createdTimestamp
})

答案 3 :(得分:0)

您可以使用fs.stat(path/of/the/file)。 它返回以下信息:

Stats {
  dev: 2114,
  ino: 48064969,
  mode: 33188,
  nlink: 1,
  uid: 85,
  gid: 100,
  rdev: 0,
  size: 527,
  blksize: 4096,
  blocks: 8,
  atimeMs: 1318289051000.1,
  mtimeMs: 1318289051000.1,
  ctimeMs: 1318289051000.1,
  birthtimeMs: 1318289051000.1,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT
 }

您应该检查值mtime,因为它代表“修改时间”或文件数据上次修改的时间。可以通过以下命令对其进行更改:mknod,utimes和写入系统调用。

答案 4 :(得分:0)

return _.max(files, function (f) {
  var fullpath = path.join(dir, f);
  return fs.statSync(fullpath).ctime;
});

上面的代码为我工作,调用此函数以获取最新文件