【问题标题】:How to check if path is a directory or file?如何检查路径是目录还是文件?
【发布时间】:2018-12-18 02:43:21
【问题描述】:

我想检查路径是文件还是目录。如果是目录,则分别记录目录和文件。稍后我想将它们作为 json 对象发送。

const testFolder = './data/';
fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    console.log(`FILES: ${file}`);
  })});

编辑: 如果我尝试这样做

fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    if (fs.statSync(file).isDirectory()) {
    console.log(`DIR: ${file}`);
  } else {
    console.log(`FILE: ${file}`)
  }
  })}); 

我得到这个错误:

nodejs binding.lstat(pathModule._makeLong(path))

更新:找到了解决方案。我必须像这样添加 testFolder + 文件:

if (fs.statSync(testFolder + file).isDirectory()) {

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

自 Node 10.10+ 起,fs.readdir 具有 withFileTypes 选项,这使其返回目录条目 fs.Dirent 而不仅仅是文件名。目录条目包含有用的方法,例如isDirectoryisFile

您的示例将通过以下方式解决:

const testFolder = './data/';
fs.readdir(testFolder, { withFileTypes: true }, (err, dirEntries) => {
  dirEntries.forEach((dirEntry) => {
    const { name } = dirEntry;
    if (dirEntry.isDirectory()) {
      console.log(`DIR: ${name}`);
    } else {
      console.log(`FILE: ${name}`);
    }
  })})

【讨论】:

    【解决方案2】:

    快速谷歌搜索..

    var fs = require('fs');
    var stats = fs.statSync("c:\\dog.jpg");
    console.log('is file ? ' + stats.isFile());
    

    阅读:http://www.technicalkeeda.com/nodejs-tutorials/how-to-check-if-path-is-file-or-directory-using-nodejs

    【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2011-12-26
    • 2013-08-14
    • 2015-07-30
    • 2012-01-15
    • 2017-08-16
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多