Node之创建与读取目录

创建目录

在fs模块中,可以使用mkdir方法创建目录

fs.mkdir(path,[mode],callback
  • path:用于指定需要被创建的目录的完整路径及目录名;
  • mode:用于指定该目录的权限,默认值为0777(表示任何人可读写该目录);
  • callback:该回调函数中使用一个参数,参数值为创建目录操作失败时触发的错误对象。

同步创建目录

fs.mkdirSync(path,[mode])

读取目录

在fs模块中,可以使用readdir方法读取目录

fs.readdir(path,callback)
  • path:读取的文件路径
  • callback:数用于指定读取目录操作完毕时调用的回调函数,在该回调函数中使用两个参数,其中第一个参数值为读取目录操作失败时触发的错误对象,第二个参数值为一个数组,其中存放了读取到的文件中的所有文件名。

同步读取

fs.readdirSync(path)

查看文件或目录的信息

在fs模块中,可以使用stat方法或lstat方法查看一个文件或目录的信息。这两个方法的唯一区别是当查看符号链接文件的信息时,必须使用lstat方法。

fs.stat(path, callback)
fs.lstat(path, callback)

  • path:文件路径
  • callback:在该回调函数中,使用两个参数,其中err参数值为查看文件或目录信息操作失败时触发的错误对象,stats参数值为一个fs.Stats对象。该对象拥有如下所示的一些方法,在这些方法中均不使用任何参数。
    • isFile():用于判断被查看的对象是否为一个文件,如果是的话则返回true,如果不是的话则返回false
    • isDirectory():用于判断被查看的对象是否为一个目录,如果是的话则返回true,如果不是的话则返回false。
    • isBlockDevice():用于判断被查看的文件是否为一个块设备文件,如果是的话则返回true,如果不是的话则返回false,该方法仅在UNIX操作系统下有效。
    • isCharacterDevice():用于判断被查看的文件是否为一个字符设备文件,如果是的话则返回true,如果不是的话则返回false,该方法仅在UNIX操作系统下有效。
    • isSymbolicLink():用于判断被查看的文件是否为一个符号链接文件,如果是的话则返回true,如果不是的话则返回false,该方法仅在lstat方法的回调函数中有效。
    • isFIFO():用于判断被查看的文件是否为一个FIFO文件,如果是的话则返回true,如果不是的话则返回false,该方法仅在UNIX操作系统下有效。
    • ·isSocket():用于判断被查看的文件是否为一个socket文件,如果是的话则返回true,如果不是的话则返回false,该方法仅在UNIX操作系统下有效。
    • dev:该属性值为文件或目录所在设备ID,该属性值仅在UNIX操作系统下有效。
    • ino:该属性值为文件或目录的索引编号,该属性值仅在UNIX操作系统下有效。
    • mode:该属性值为使用数值形式代表的文件或目录的权限标志。
    • nlink:该属性值为文件或目录的硬连接数量。
    • uid:该属性值为文件或目录的所有者的用户ID,该属性值仅在UNIX操作系统下有效。
    • gid:该属性值为文件或目录的所有者的组ID,该属性值仅在UNIX操作系统下有效。
    • rdev:该属性值为字符设备文件或块设备文件所在设备ID,该属性值仅在UNIX操作系统下有效
    • size:该属性值为文件尺寸(即文件中的字节数)。
    • atime:该属性值为文件的访问时间。
    • mtime:该属性值为文件的修改时间。
    • ctime:该属性值为文件的创建时间。
      同步方法
var stats=fs.statSync(path)
var stats=fs.lstatSync(path)

在使用open方法或openSync方法打开文件并返回文件描述符后,可以使用fs模块中的fstat方法查询被打开的文件信息

fs.fstat(fd, callback)

同步

fs.fstatSync(fd)

检查文件或目录是否存在

在fs模块中,可以使用exists方法检查一个文件或目录是否存在

异步方法:

fs.exists(path, callback)
  • path:文件或者目录路劲
  • callback:callback参数用于指定检查文件或目录信息操作完毕时执行的回调函数。在该回调函数中,使用一个参数,当文件或目录存在时,该参数值为true,当文件或目录不存在时,该参数值为false。

同步方法:

var exists=fs.existsSync(path)

获取文件或目录的绝对路径

在fs模块中,可以使用realpath方法获取一个文件或目录的绝对路径。

异步方法:

fs.realpath(path,[cache],callback)
  • path:需要查看的文件或目录的完整路径
  • cache:参数值为一个对象,其中存放了一些预先指定的路径。
  • callback:数用于指定获取文件或目录的绝对路径操作完毕时执行的回调函数,在回调函数中使用两个参数,其中err参数值为获取文件或目录的绝对路径操作失败时触发的错误对象,resolvedPath参数值为获取到的文件或目录的绝对路径。

示例:

var cache = {'/etc':'/private/etc'};
fs.realpath('/etc/passwd',cache,function(err,resolvedPath) {
//
回调函数代码略
});

同步方式:

var resolvedPath=fs.realpathSync(path,[cache]

修改文件访问时间及修改时间

在fs模块中,可以使用utimes方法修改文件的访问时间及修改时间。

fs.utimes(path,atime,mtime,callback)
  • path:用于指定需要被修改时间的文件的完整路径及文件名
  • atime:用于指定修改后的访问时间
  • mtime:用于指定修改后的修改时间
  • callback:用于指定修改时间操作完成后执行的回调函数,该回调函数使用一个参数,参数值为修改文件时间操作失败时触发的错误对象。

示例:

var fs=require('fs');
fs.utimes('./message.txt',new Date(),new Date(),function(err){
    if(err) console.log("
    修改文件时间操作失败。");
    console.log("
    修改文件时间操作成功。");
});

同步方式:

fs.utimesSync(path,atime,mtime)

在使用open方法或openSync方法打开文件并返回文件描述符后,可以使用fs模块中的futimes方法修改文件的访问时间或修改时间

fs.futimes(fd,atime,mtime,callback)
fs.futimesSync(fd,atime,mtime

修改文件或目录的读写权限

在fs模块中,可以使用chmod方法修改文件或目录的读写权限

fs.chmod(path, mode, callba
  • path:文件或目录路径
  • mode:用于指定修改后的文件或目录读写权限
  • callback:用于指定修改文件读写权限操作完成后执行的回调函数,该回调函数使用一个参数,参数值为修改文件读写权限操作失败时触发的错误对象。

示例:

var fs=require('fs');
// 0600
代表所有者可读写,其他人没有任何权限
fs.chmod('./message1.txt',0600,function(err){
    if(err) console.log("
    修改文件权限操作失败。");
    else console.log("
    修改文件权限操作成功。");
});

同步方法:

fs.chmodSync(path, mode)

在使用open方法或openSync方法打开文件并返回文件描述符后,可以使用fs模块中的fchmod方法修改文件的读写权限

fs.fchmod(fd,mode,callback)
fs.fchmodSync(fd,mode)

移动文件或目录

在fs模块中,可以使用rename方法移动文件或目录,当移动后的路径与原路径为同一路径,而移动后的文件名或目录名与原文件名或目录名不同时,则执行文件或目录的重命名操作。

fs.rename(oldPath,newPath,callback)
  • oldPath:用于指定被移动文件或目录的完整路径及文件名或目录名
  • newPath:用于指定移动后该文件或目录的完整路径及文件名或目录名
  • callback:用于指定移动操作执行完毕时调用的回调函数,在该回调函数中使用一个参数,参数值为移动文件或目录操作失败时触发的错误对象。

同步方法:

fs.renameSync(oldPath,newPath)

创建与删除文件的硬链接

在fs模块中,可以使用link方法创建文件的硬链接

fs.link(srcpath,dstpath,callback)
  • srcpath:用于指定需要被创建硬链接的文件的完整路径及文件名
  • dstpath:用于指定被创建的硬链接的完整路径及文件名,该硬链接与原文件必须位于同一卷中
  • callback:该回调函数中使用一个参数,参数值为创建硬链接操作失败时触发的错误对象
    示例:
var fs=require('fs');
fs.link('./message.txt','./test/test.txt',function(err){
    if(err) console.log('
    创建硬链接操作失败。');
    else console.log('
    创建硬链接操作成功。');
});

同步方法:

fs.linkSync(srcpath,dstpath)

删除硬链接

在fs模块中,可以使用unlink方法删除文件的硬链接。

fs.unlink(path,callback)

同步方法:

fs.unlinkSync(path)

创建与查看符号链接

在操作系统中,可以为文件或目录创建一个或多个符号链接。所谓符号链接,是一种特殊的文件,这个文件中仅包含了另一个文件或目录的路径及文件名或目录名。如果打开一个文件的符号链接文件进行编辑,操作系统将自动打开符号链接中所指向的原文件进行编辑,如果打开一个目录的符号链接文件进行文件的创建、编辑或删除操作,则操作系统将自动打开符号链接中所指向的原目录并执行相应的操作。如果删除符号链接文件,不会删除原文件或目录,如果删除或移动原文件或目录,符号链接文件也不会被删除,这时产生一种称为“断链”的现象。

在fs模块中,可以使用symlink方法来创建文件或目录的符号链接

fs.symlink(srcpath,dstpath,[type],callback)
  • srcpath:用于指定需要被创建符号链接的文件或目录的完整路径及文件或目录名
  • dstpath:用于指定被创建的符号链接的完整路径及文件名
  • type:用于指定为文件创建符号链接还是为目录创建符号链接,可指定值为file(为文件创建符号链接)、dir(为目录创建符号链接,在非Windows操作系统中只能使用dir参数值)以及junction(为目录创建符号链接,只在Windows操作系统中有效),默认值为file
  • callback:用于指定创建符号链接操作完毕时调用的回调函数,在该回调函数中使用一个参数,
    参数值为创建符号链接操作失败时触发的错误对象。

同步方法:

fs.symlinkSync(srcpath,dstpath,[type])

读取符号链接中所包含的另一个文件或目录的路径及文件名或目录名

fs.readlink(path,callback)
  • path:用于指定符号链接的路径及文件名
  • callback:用于指定读取符号链接操作完毕时调用的回调函数,在回调函数中使用两个参数,其中第一个参数值为读取符号链接操作失败时触发的错误对象,第二个参数值为读取到的一个链接字符串,其中包含了另一个文件或目录的路径及文件名或目录名。

同步方法:

var linkString=fs.readlinkSync(path)

截断文件

在fs模块中,可以使用truncate方法对文件进行截断操作(所谓对文件进行截断操作,是指一种首先清除文件内容,然后修改文件尺寸的操作)

fs.truncate(filename,len,callback)
  • filename:用于指定需要被截断文件的完整文件路径及文件名
  • len:用于指定被截断后的文件尺寸(以字节为单位)
  • callback:用于指定截断文件操作完毕时执行的回调函数,该回调函数中使用一个参数,参数值为截断文件操作失败时触发的错误对象

同步方法:

fs.truncateSync(filename,len)

删除空目录

在fs模块中,可以使用rmdir方法删除空目录

fs.rmdir(path,callback)
  • path:用于指定需要被删除目录的完整路径及目录名;
  • callback:数用于指定删除空目录操作执行完毕时调用的回调函数,该回调函数使用一个参数,参数值为删除目录操作失败时触发的错误对象。

同步方法:

fs.rmdirSync(path)

监视文件或目录

在fs模块中,可以使用watchFile方法对文件进行监视,并且在监视到文件被修改时执行某些处理

fs.watchFile(filename,[options],listener)
  • filename:用于指定需要被监视的文件的完整路径及文件名
  • options:
    • persistent:指定当指定了被监视的文件后是否停止当前正在运行的应用程序,该属性的默认属性值为true;
    • interval:指定每隔多少毫秒监视一次文件是否发生改变以及发生了什么改变。
  • listener:用于指定当被监视的文件发生改变时调用的回调函数
    示例:
var fs=require('fs');
fs.watchFile('./message.txt',function(curr, prev) {
    if(Date.parse(prev.ctime)==0)
    console.log('message.txt文件被创建。');
    else if(Date.parse(curr.ctime)==0)
    console.log('message.txt文件被删除。');
    else if(Date.parse(prev.mtime)!=Date.parse(curr.mtime))
    console.log('message.txt文件内容被修改。');
});

取消监听

fs.unwatchFile(filename,[listener])

在fs模块中,可以使用watch方法对文件或目录进行监视,并且在监视到文件或目录被修改时执行某些处理

var watcher=fs.watch(filename,[options],[listener])

与监听文件参数一样

watch方法返回一个fs.FSWatcher对象,该对象拥有一个close方法,用于停止对watch方法中指定监视的文件或目录所执行的监视操作。

watcher.close()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容