在nodejs中访问网络驱动器?

时间:2017-02-13 21:38:37

标签: javascript node.js networking

我正在尝试列出S:/ test文件夹中的文件,该文件夹位于我的网络中(它不是本地目录)。我想知道怎么做?到目前为止,代码如下所示:

const testFolder = 's:/test';
const fs = require('fs');
fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    console.log(file);
  });
})

我已经尝试将路径更改为S:test,s:\ test无效,错误总是“无法读取'forEach'未定义”

1 个答案:

答案 0 :(得分:1)

如果这是Windows(我认为是这样),那么你需要做几件事:

  1. 使用完整路径(驱动器号可以,但您也可以在Windows中使用UNC路径)到所需目录。
  2. 使用额外的反斜杠转义字符串定义中的任何反斜杠。
  3. 始终在fs.readdir()回调中使用错误处理,因此如果出现错误,您可以确切地看到错误是什么。
  4. 工作代码:

    const fs = require('fs');
    const testFolder = 's:\\test';
    
    fs.readdir(testFolder, (err, files) => {
      if (err) return console.log(err);
      files.forEach(file => {
        console.log(file);
      });
    });
    

    我刚在自己的硬盘上试过这个代码,它运行得很好。

    而且,仅供参考我现在几乎总是在现代node.js而不是for/of中使用ES6 .forEach(),因为它对解释器来说效率更高,并且它为您提供更多的循环控制(例如,您可以使用break退出循环。

    const testFolder = 's:\\test';
    const fs = require('fs');
    
    fs.readdir(testFolder, (err, files) => {
      if (err) return console.log(err);
      for (let file of files) {
        console.log(file);
      }
    });