我正在使用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);
});
};
答案 0 :(得分:1)
我不知道这样的事情是否存在,如何定义“标准文件夹”?听起来好像您只想在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
});