【问题标题】:How to check if directory is empty?如何检查目录是否为空?
【发布时间】:2018-12-23 20:22:32
【问题描述】:

我正在使用 Node.js 作为后端。我想检查目录是否为空,然后向客户端发送任何响应,例如 res.json('it is empty')res.sendStatus(404) 否则做一些事情......因为在我的客户端(Reactjs),我的应用程序会等待几分钟的响应。

如果文件夹不为空且工作正常,Node.js 会以 JSON 响应,但不会响应空文件夹。

Nodejs:

var dirTree = ('./data/');

var diretoryTreeToObj = function(dir, done, res) {
  var results = [];

  fs.readdir(dir, function(err, list, res) {
    if (err)
      return done(err);

    var pending = list.length;

    if (!pending && pending !== 0)
      return done(null, {
        name: path.basename(dir),
        type: 'folder',
        children: results
      });

    list.forEach(function(file) {
      file = path.resolve(dir, file);
      fs.stat(file, function(err, stat) {
        if (stat && stat.isDirectory()) {
          let data2 = __dirname + dir + '/' + path.basename(file)
          let dirName = data2.split('\\').pop().split('/data/').pop()
          results.push({
            name: dirName,
            type: 'folder',
          });
          if (!--pending)
            done(null, results);
        } else {
          let data3 = __dirname + dir + '/' + path.basename(file)
          let contentName = data3.split('\\').pop().split('/data/').pop()
          results.push({
            name: contentName,
            type: 'file'
          });
          if (!--pending)
            done(null, results);
        }
      });
    });
  });
};

app.get('/source/:fileid(*)', (req, res) => {
  const {
    fileid
  } = req.params;
  var allFiles = __dirname + /data/ + fileid
  diretoryTreeToObj(allFiles, (err, getDirs) => {
    if (err) {
      res.sendStatus(404);
    } else {
      res.json(getDirs);
    }
  })
})

【问题讨论】:

  • 你的 if 条件错误,试试这个 if (pending == 0)
  • @Dineshundefined 你能举个例子吗?

标签: javascript node.js express


【解决方案1】:

if 条件应该是:

if (!pending){
  return done(null, {
    name: path.basename(dir),
    type: 'folder',
    children: results
  });
}

检查这个: how to determine whether the directory is empty directory with nodejs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多