我有这个简单的nodeJS脚本用于从PATH读取文件并检查它们是否是目录:
var fs = require("fs");
var allFiles = fs.readdirSync(__dirname + '/bb');
allFiles.forEach(function(name){
if(fs.lstatSync(name).isDirectory())
{
console.log(name);
}
});
问题是当我检查文件是否为DIRECTORY .isDirectory()时,文件以 DOT “。”<< / p>
fs.js:679
return binding.lstat(pathModule._makeLong(path));
^
Error: ENOENT, no such file or directory 'D:\test\.ggg'
at Object.fs.lstatSync (fs.js:679:18)
at D:\test\server.js:4:11
at Array.forEach (native)
at Object.<anonymous> (D:\test\server.js:3:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
如果我不检查DIRECTORY或文件名是否以DOT开头“。”它工作得很好。 操作系统:Windows 7
答案 0 :(得分:0)
您使用错误的路径呼叫.lstatSync
。
请尝试使用path.join
来创建正确的路径。
该代码段应该看起来像
var fs = require("fs");
var allFiles = fs.readdirSync(__dirname + '/bb');
allFiles.forEach(function(name){
if(fs.lstatSync(path.join("bb",name)/*Correct path*/).isDirectory())
{
console.log(name);
}
});