如何获取文件夹中的最新图像?

How to get the most recently image in a folder?

如何获取添加到文件夹的最新图像并将该图像文件路径保存到变量?我已经检查过这里(堆栈溢出),但没有看到 post 专门回答我的问题。这是我到目前为止列出的所有文件,但我不确定如何让它们按最近修改的顺序排序。这是一个独特而具体的问题。我不介意是否使用此代码,只要结果是可以获取文件夹中最新文件的代码即可。

代码:

(async () => {
    var lastdownloadedimage = "";
    var pathtocheck = "C:/Users/user1/Downloads";
    var pathtocheckimage = "C:/Users/user1/Downloads/ot.png";
    const testFolder = pathtocheck;
    const fs = require('fs');
    
    
    
    var lastdownloadedimage;
    var filescount = 0;
    var filename = [];
    var filedates = [];
    var filessortedbytimefromcurrentdateaccending = [];
    var files;
    
    //create a tuple for the file date and name
    var filedata = [];
    
    //fs.readdirSync(testFolder).forEach(   filescount++);
    files = fs.readdirSync(testFolder);
    filescount = files.length;
    
    console.log(files[0]);
    

    filedates = fs.statSync(pathtocheckimage).mtime.getTime();
    filename = fs.readdirSync(testFolder);
    
    console.log(filescount);
    
    
    for(var currentfiletocheck = 0; currentfiletocheck < filescount ; currentfiletocheck++){
        //get current date
        
        //find dile that is closest to current date
        
        //use the index of that file data to find the file name
        
        //save the files name to a variable
        
        //filename[currentfiletocheck] = fs.readdirSync(testFolder)[currentfiletocheck];
        //filedates[currentfiletocheck] = fs.stats.mtime.getTime()[currentfiletocheck];
        
        //filedata[currentfiletocheck][0] = filename[currentfiletocheck];
        //filedata[currentfiletocheck][1] = filedate[currentfiletocheck];
        
            //console.log(files[currentfiletocheck]);

    }
    


    filessortedbytimefromcurrentdateaccending
        filedata.sort(function(a, b) {
          return a < b ? -1 : (a > b ? 1 : 0);
        });
        
        
        for (var i = 0; i < filedata.length; i++) {
          
          var filenamessortedbytimefromcurrentdateaccending = filedata[i][0];
          var filedatesortedbytimefromcurrentdateaccending = filedata[i][1];

          lastdownloadedimage = filedatesortedbytimefromcurrentdateaccending;

            // do something with key and value
        }
/*

    */
    console.log(lastdownloadedimage);


})();

我采用了不同的方法,而不是收集时间戳并对其进行排序,而是遍历文件并将每个时间戳与下一个时间戳进行比较 - 每次都保留时间戳和后一个时间戳的文件路径。

请注意,这也会检查目录,因此如果您想忽略它们,则必须实施过滤器。

let fs = require('fs')

let dirToCheck = '.'

let files = fs.readdirSync(dirToCheck)

let latestPath = `${dirToCheck}/${files[0]}`
let latestTimeStamp = fs.statSync(latestPath).mtime.getTime()

files.forEach(file => {

  let path = `${dirToCheck}/${file}`

  let timeStamp = fs.statSync(path).mtime.getTime()

  if (timeStamp > latestTimeStamp) {
    latestTimeStamp = timeStamp
    latestPath = path
  }
});

console.log(latestPath)