一个fs.statSync的问题

"usestrict";
varfs=require('fs');
varcolors=require('colors/safe');
fs.readdir(process.cwd(),function(err,files){
files.forEach(function(item,index,array){
fs.statSync(item,function(err,stat){
if(stat.isDirectory()){
console.log(colors.blue(item+'/'));
}
elseif(stat.isFile()){
console.log(colors.green(item));
}
});
});
});
这个程序本来是想打印出当前目录下的文件的,但是如果我把fs.stat换成fs.statSync后,就无法输出了,这是为啥呢?node的版本是v0.12.7
FFIVE
浏览 522回答 2
2回答

一只名叫tom的猫

因为statSync是同步的方法啊,结果直接得到了也就是stat=fs.statSync(item)然后判断stat.isDirectory()

慕沐林林

来看一下nodejs的FileSystem模块提供了很多种方法,这些方法大致可以分别为两类:一类是异步+回调的;一类是同步的。其中stat就是属于前者,statSync就是属于后者。来看一下使用区别:1.异步版:fs.stat(path,callback):path是一个表示路径的字符串,callback接收两个参数(err,stats),其中stats就是fs.stats的一个实例;2.同步版:fs.statSync(path)只接收一个path变量,fs.statSync(path)其实是一个fs.stats的一个实例;3.再来看fs.stats有以下方法:stats.isFile()stats.isDirectory()stats.isBlockDevice()stats.isCharacterDevice()stats.isSymbolicLink()(onlyvalidwithfs.lstat())stats.isFIFO()stats.isSocket()看完这些,你就明白了吧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript