【问题标题】:Error: ENOENT: no such file or directory错误:ENOENT:没有这样的文件或目录
【发布时间】:2017-10-07 00:41:18
【问题描述】:

我试图从用户的选择中获取文件夹路径,并为每个文件读取它并返回数据。但是,在获取文件后,由于某种我还无法理解的原因,我无法读取数据。我试图读取和呈现的目录确实存在。我也参考了其他类似的帖子。

readFolder() {
    dialog.showOpenDialog({ properties: ['openDirectory'] }, (dirFiles) => {
      console.log(dirFiles);
      if (dirFiles === undefined) {
        console.log('No file ');
        return;
      }
      const pathName = dirFiles[0];
      fs.readdir(pathName, (err, files) => {
        files.forEach(file => {
          fs.readFile(file, 'utf-8', (err, data) => {
            if (err) {
              console.log(`something went wrong  ${err}`);
            } else {
              console.log(data);
            }
          });
        });
      });
    });
  }

【问题讨论】:

    标签: javascript node.js electron fs


    【解决方案1】:

    我犯的错误是我没有意识到“文件”的返回值,它只是文件名作为字符串而不是路径。分配let filePath =${pathName}/${file}; 并继续阅读它解决了这个问题。

    【讨论】:

    • 其实你应该使用path.join(pathName, file)来保证你的代码平台安全。
    • 解释什么?将${pathName}/${file} 替换为path.join(pathName, file)。有关更多信息,请参阅path module。一般来说,您应该使用该模块来操作路径,然后无论路径分隔符是什么(即使在它是 `\` 的窗口上)它都能正常工作,而不是自己进行字符串连接。
    【解决方案2】:

    readdir 返回文件名“a”、“b”、“c”等。您希望 pathName + '/' + file 用于“/path/to/file/a”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 2017-12-28
      • 2022-01-16
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      相关资源
      最近更新 更多