Node|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])

与监听文件参数一样
【Node|Node之创建与读取目录】watch方法返回一个fs.FSWatcher对象,该对象拥有一个close方法,用于停止对watch方法中指定监视的文件或目录所执行的监视操作。
watcher.close()

    推荐阅读