2014-03-25 41 views
0

我有这个简单的脚本的NodeJS用于从路径读取文件,并检查它们是否目录与否:读取以DOT开头的文件名“”。“

var fs = require("fs"); 
var allFiles = fs.readdirSync(__dirname + '/bb'); 
allFiles.forEach(function(name){ 
if(fs.lstatSync(name).isDirectory()) 
    { 
     console.log(name);   
    } 
}); 

问题是,当我检查,如果该文件是目录.isDirectory()和文件始于DOT

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) 

如果我不检查,如果目录或文件名不以点开始的“”它工作得很好。 操作系统:Windows 7

+0

你可以试试'path.join( “BB”,名)''中.lstatSync..'? – Gntem

+0

它现在与路径一起工作,好像不是DOT是问题,问题就像你说的错误路径.lstatSync,ty。 – tibbus

回答

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);   
    } 
});