fs模块下的Stats类
在nodejs
中,我们要检查一个给定的文件路径是否存在,我们可以通过fs
模块提供的exists(path,callback)
方法来检测。这里我们都使用异步操作。
虽然fs.exists
方法可以检查文件是否存在,但是在新版本nodejs
中,该方法已经标记为废弃的,不稳定的。官方给我们提供了另外一个方法来检测文件是够存在,那就是fs.stat(path,callback)
方法。callback
中有两个参数,分别为error & stats,其中,stats为fs.stat()返回的一个对象。下面我们使用代码来简单介绍下fs.stat
的用法
具体对象参数作用,我们可以参考官网文档 http://nodejs.cn/api/fs.html#fs_class_fs_stats
stats
对象中也给我提供了一下方法来判断给定的路径类型是否是文件类型还是目录类型。
stats.isFile():判断给定的path是否是文件类型。
statsisDirectory():判断给定的path是否是目录类型。
isBlockDevice():判断给定的path是否是块设备。
isCharacterDevice():判断给定的path是否是字符设备。
isFIFO():判断给定的path是否是FIFO。
isSocket:判断给定的path是否是Socket 。
注意:如果检查一个文件是否存在,但是我们并不操作它,推荐使用fs.access(path,mode,callback)
mode 是一个可选的整数,指定要执行的可访问性检查。 以下常量定义了 mode 的可能值。 可以创建由两个或更多个值的位或组成的掩码。
fs.constants.F_OK - path 文件对调用进程可见。 这在确定文件是否存在时很有用,但不涉及 rwx 权限。 如果没指定 mode,则默认为该值。
fs.constants.R_OK - path 文件可被调用进程读取。
fs.constants.W_OK - path 文件可被调用进程写入。
fs.constants.X_OK - path 文件可被调用进程执行。 对 Windows 系统没作用(相当于 fs.constants.F_OK)。
不建议在调用 fs.open() 、 fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查一个文件的可访问性。 如此处理会造成紊乱情况,因为其他进程可能在两个调用之间改变该文件的状态。 作为替代,用户代码应该直接打开/读取/写入文件,当文件无法访问时再处理错误。