2014-03-25 45 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);   
    } 
});