为了账号安全,请及时绑定邮箱和手机立即绑定

一个fs.statSync的问题

一个fs.statSync的问题

FFIVE 2019-04-13 08:36:58
"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
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

因为statSync是同步的方法啊,结果直接得到了也就是stat=fs.statSync(item)然后判断stat.isDirectory()
                            
查看完整回答
反对 回复 2019-04-13
?
慕沐林林

TA贡献2016条经验 获得超9个赞

来看一下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()
看完这些,你就明白了吧。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 521 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信