我想从路径列表中获取目录中的所有文件和目录
例如,我有一组路径:
[
folder1/folder2/file1.txt,
folder1/folder2/folder3/file1.txt,
folder1/folder2/file2.txt
]
现在,我想要一种方法来获取目录中的所有文件和目录,例如“ folder1 / folder2”,并希望获得具有以下对象的数组:
[
{
"name": "file1.txt",
"isDirectory": false
}
{
"name": "folder3",
"isDirectory": true
}
{
"name": "file2.txt",
"isDirectory": false
}
]
这是我的代码:
var paths = [
"folder1/folder2/file.txt",
"folder1/folder2/folder3/file2.txt",
"folder1/folder2/file2.txt",
"folder1/folder3/file3.txt",
]
function getFilesInDir(path) {
var files = [];
var pathLength = path.split("/").length;
paths.forEach(pth => {
var pthSplit = pth.split("/");
var length = pthSplit.length;
if(pth.startsWith(path)) {
for(var i = 0; i < length; i++) {
var element = pthSplit.pop();
if(pthSplit.join("/") == path) {
var isDirectory = (i != 0);
var file = {
name: element,
isDirectory
};
if(files.filter(fl => {
return JSON.stringify(fl) == JSON.stringify(file);
}).length == 0) files.push(file);
}
}
}
});
return(files);
}
console.log(getFilesInDir("folder1/folder2"));
它可以工作,但在我的用例中,路径数组长600000个元素,而我的函数大约需要70秒。