fs.stat(path,callback);
//传入的参数是文件路径,和回调函数
fs.lstat(path,callback);
//传入的参数是目录的路径,和回调函数
fs.fstat(fd,callback);
//传入的参数是文件描述符,和回调函数
//所以,该方法在readFile时,在open打开文件成功之后,才使用。
callback(err,stats){
//回调函数的参数是相同的,第一个参数为错误对象,包含错误信息
//第二个参数,也就是本篇文章的重点,为一个State对象的实例,包含对应文件的或者目录的相关信息
}
// Static method to set the stats properties on a Stats object.
fs.Stats = function(
dev,
mode,
nlink,
uid,
gid,
rdev,
blksize,
ino,
size,
blocks,
atim_msec,
mtim_msec,
ctim_msec,
birthtim_msec) {
this.dev = dev;
//dev为文件或者目录所在的设备ID,只有在UNIX操作系统下该值有效
this.mode = mode;
//和之前在write时的mode属性相同,为文件的权限标志,数字形式
this.nlink = nlink;
//文件或目录的硬连接数,类似于一个文件的别名,使用fs.link创建,使用fs.unlink删除,
//我这里不太理解这个存在的意义,所以接下来也不会有这个相关的内容
this.uid = uid;
//uid为文件或者目录的所有者的用户ID,仅在UNIX操作系统有效
this.gid = gid;
//gid为文件或者目录所有者所在组的ID,仅在UNIX操作系统有效
this.rdev = rdev;
//字符设备文件或者块设备文件所在的设备ID,仅在UNIX操作系统有效
this.blksize = blksize;
//没有在任何地方,看到关于该属性的描述,源码中
this.ino = ino;
//文件或者目录的索引编号,仅在UNIX操作系统下有效
this.size = size;
//文件尺寸,即文件中的字节数
this.blocks = blocks;
//没有看到相关的介绍
this.atime = new Date(atim_msec);
//文件数据上次被访问的时间.会被 mknod(2), utimes(2), and read(2) 等系统调用改变。
this.mtime = new Date(mtim_msec);
// 文件上次被修改的时间。 会被 mknod(2), utimes(2), and write(2) 等系统调用改变
this.ctime = new Date(ctim_msec);
//文件状态上次改变的时间。 (inode data modification).
//会被 chmod(2), chown(2), link(2), mknod(2), rename(2),
//unlink(2), utimes(2), read(2), and write(2) 等系统调用改变。
this.birthtime = new Date(birthtim_msec);
// 文件被创建的时间。 会在文件被创建时生成。 在一些不提供文件birthtime的文件系统中,
//这个字段会被 ctime 或 1970-01-01T00:00Z (ie, unix epoch timestamp 0)来填充
};
//属于一个判断各个属性的方法,其他方法,都是基于调用该方法,获取得到的返回值。
fs.Stats.prototype._checkModeProperty = function(property) {
return ((this.mode & constants.S_IFMT) === property);
};
//用于判断被查看的对象是否为一个目录,返回true,false
fs.Stats.prototype.isDirectory = function() {
return this._checkModeProperty(constants.S_IFDIR);
};
//用于判断,被查看的对象是否为一个文件,返回true,false,于isDirectory的返回值相反
fs.Stats.prototype.isFile = function() {
return this._checkModeProperty(constants.S_IFREG);
};
//用于判断被查看的文件时否为一个块设备文件(概念请看源码之后),返回true,false,只在UNIX操作系统有效
fs.Stats.prototype.isBlockDevice = function() {
return this._checkModeProperty(constants.S_IFBLK);
};
//用于判断被查看的文件,是否为一个字符设备文件,返回true,false,只在UNIX系统下有效
//本以为其值与isBlockDevice返回值相反,但是测试了一下,都是返回的false(MAC系统,操作.js的文件),
//可能是有些关系不,暂时不太了解
fs.Stats.prototype.isCharacterDevice = function() {
return this._checkModeProperty(constants.S_IFCHR);
};
//被查看的文件是否为一个符号链接文件,返回true,false,该方法只在lstat的回调函数中有效。
//如果被查看的文件是符合链接文件,那么就认为改符号链接是一个目录,需要使用lstat查看相关的属性才行。
fs.Stats.prototype.isSymbolicLink = function() {
return this._checkModeProperty(constants.S_IFLNK);
};
//查看文件是否为一个FIFO文件,返回true,false,仅在UNIX系统下有效
fs.Stats.prototype.isFIFO = function() {
return this._checkModeProperty(constants.S_IFIFO);
};
//判断一个文件是否为socket文件,返回true,false,仅在UNIX系统下有效。
//话说:有socket文件这种文件?socket文件也可以判断的?
fs.Stats.prototype.isSocket = function() {
return this._checkModeProperty(constants.S_IFSOCK);
};
# if defined(__POSIX__) X(blksize) # else Local<Value> blksize = Undefined(env->isolate()); # endif
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有