我有一个NextJS 14.0.2应用程序,目前运行NodeJS v20.9.0。我试图递归地读取目录中的所有文件和文件夹,并获取每个文件的元数据。我目前的代码是-
const foldersArr = [];
const filesArr = [];
const fileDetails = fs.lstatSync(path); //for a specified path
//here, list item is a metadata object
if(fileDetails.isDirectory()) {
foldersArr.push(listItem);
} else {
filesArr.push(listItem);
}
字符串
问题是,fileDetails.isDirectory()
对所有文件夹和文件返回true,而对文件返回false。我的代码的存储库-https://github.com/rohithandique/next-file-system我不确定问题是什么,如果需要更多信息,请告诉我。任何帮助都将非常感谢,谢谢。
1条答案
按热度按时间mlmc2os51#
在你的代码中,你是这样做的:
字符串
但是,
path
是你列出的目录,而不是你要迭代的文件。所以,既然你把目录作为path
参数传递给你的函数,那么当然是这样的:型
将始终记录true,因为
path
是您调用fs.promises.readdir(path)
的父目录,而不是该目录中的单个文件。注意,如果你将
withFileTypes
参数传递给fs.promises.readdir(path, {withFileTypes: true})
,那么你将在第一次迭代中得到fs.DirEnt
。这里有一个简单的JavaScript版本,你可以直接在nodejs中执行(只需将变量
testPath
设置为你想要删除的任何目录):型