如何获取文件夹中的最新图像?
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)
如何获取添加到文件夹的最新图像并将该图像文件路径保存到变量?我已经检查过这里(堆栈溢出),但没有看到 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)