【问题标题】:how to get list of standard folders with fs.readdir如何使用 fs.readdir 获取标准文件夹列表
【发布时间】:2019-05-28 02:38:23
【问题描述】:

我正在使用 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);
  });
};

【问题讨论】:

    标签: node.js windows macos


    【解决方案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
    });
    

    【讨论】:

    • 关于标准文件夹!我的意思是没有隐藏的文件夹!
    • 然后只需使用fs.statfs.readdir 函数查找目录,然后使用hidefile 库来检测它是否隐藏。
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2011-01-15
    • 2014-01-21
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多