node.js - 如何使用 fs.readdir 获取标准文件夹列表
问题描述
我正在使用 node.js 做某事。我需要读取特定路径内的所有文件和文件夹并返回标准“文件夹”。例如,当我将“MAC HD”作为路径时,我希望获得“应用程序”、“库”、“系统”、“用户”作为结果。我需要获取所有未隐藏的文件夹。在 Windows 中,我有同样的问题 我需要标准文件夹或常规的未隐藏文件夹,而不是系统文件夹。
这是我的整个代码:
const child = require('child_process');
var fs = require('fs');
const os = require('os');
const currentPlatform = () => {
if ('darwin' === os.platform()) {
return 'MAC';
} else {
return 'WIN';
}
};
const getDriveList = (data, emitter) => {
const thisPlatform = currentPlatform();
if (thisPlatform === 'WIN') {
child.exec('wmic logicaldisk get name', (error, stdout) => {
let winDriveList = stdout
.split('\r\r\n')
.filter(value => /[A-Za-z]:/.test(value))
.map(value => value.trim());
emitter('getDriveList', winDriveList);
});
} else {
fs.readdir('/Volumes', (err, files) => {
emitter('getDriveList', files);
});
}
};
const getFilesList = (path, emitter) => {
console.log("this was sent from client ===>> ", path);
fs.readdir(path, (err, files) => {
emitter('getFileList', files);
});
};
解决方案
不知道这样的东西是否存在,你如何定义“标准文件夹”?听起来您只想/
在 mac 和 windows 下获取目录列表,您可能需要在注册表中挖掘您要查找的内容。
您可以使用fs.stat
来获取有关给定路径的详细信息,无论它是目录还是文件。
fs.stat('/Users', (err, stats) => {
if (err) throw err;
if (stats.isDirectory()) console.log("Its a directory!");
});
默认情况下,Nodejs 没有公开检测隐藏文件的方法,您可以尝试使用hidefile库,该库具有一些特定于平台的逻辑来检测文件是否隐藏。
hidefile.isHidden("/Users", function(err, result) {
if (err == null) console.log(result); //-> false
});
推荐阅读
- sql - 使用 sql stmt 从日期表中查找最近的未来或等于日期
- android-ndk - HelloCardboard 示例:sdk 在 Gradle 中不可见
- php - PHP Cron 作业备份到 Google Drive
- javascript - 从 React 应用程序内部访问 Bootstrap 方法
- bazel - Bazel的http_file调试认证
- python - 如何检查日期(手动传递的变量)是否在熊猫数据框列中的给定开始日期和结束日期之间?
- google-maps - 如何限制 Google 地图地理编码器?
- delphi - 在Delphi中使用TImage组件将文件中的链接缩略图绘制成形状
- python - Pycharm (Python 3.8) - 如何让输入同时接受小写和大写输入?
- scala - 强制依赖返回类型必须实现 typeclass