node.js当中的fs模块与readline模块主要对应着系统的文件操作,node当中的文件操作和网络操作都属于阻塞性操作,故存在着大量的异步回调函数,其回调函数遵循上一篇文章介绍的 node.js当中对于回调函数的规定 的规则。并且为了避免出错,凡是涉及文件操作,我们一律使用文件的绝对物理路径来传递文件路径参数,这里常用的为path.join()
和__dirname
,可详细用法可参考 node.js当中的全局成员与path模块的使用。文件操作的api当中,每一个异步操作的api都有一个与之对应的同步方法,在此只介绍异步的api,一般来说,同步的方法只是比异步的方法少了一个回调函数的参数。
fs模块当中的常用API
1、fs.stat(path,callback)
该方法用于检测文件的状态,可以借此来判断某个文件是否存在。path
参数传入该文件的绝对物理路径,该callback
回调函数有两个参数err
和stats
。其中err
为错误信息参数,stats
为一个文件状态对象。
若传入的文件路径当中的文件不存在,则会出现如下的报错信息。
2、fs.writeFile(path,data[,options],callback)
该方法可用于往指定文件当中写入内容,该内容会覆盖文件当中原有的内容。若传入的文件路径当中的文件不存在,则先完成该文件的穿件,再往里面写入指定内容。path
参数为该文件的绝对物理路径,data
为需要写入该文件当中的数据内容,其中options
参数可选,可以传入编码格式,若不传则默认为utf8
。callback
回调参数当中只有一个错误信息参数err
,一般在写入失败时触发调用。
3、fs.appendFile(path,data[,options],callback)
该方法可用于往指定文件当中追加写入内容,该内容不会覆盖文件当中原有的内容,只会在原有内容的基础上进行追加。若传入的文件路径当中的文件不存在,则先完成该文件的穿件,再往里面写入指定内容。path
参数为该文件的绝对物理路径,data
为需要写入该文件当中的数据内容,其中options
参数可选,可以传入编码格式,若不传则默认为utf8
。callback
回调参数当中只有一个错误信息参数err
,一般在追加写入失败时触发调用。
4、fs.unlink(path,callback)
该方法可用于完成指定文件的删除。path
参数为该文件的绝对物理路径,callback
回调参数当中只有一个错误信息参数err
,一般在该文件不存在或者删除文件失败时触发调用。
5、fs.readFile(path[,options],callback)
该方法用于读取指定文件当中的内容,path
参数为该文件的绝对物理路径,其中options
参数可选,可以传入编码格式,如读取文本文件时,可传入'utf8'
,若不指定编码格式,则默认输出读取的文件内容为Buffer
形式,故一般都会传入该参数。callbac
k回调参数当中有两个参数err
和data
,其中err
为错误信息参数,一般在在文件不存在或者读取文件失败时触发调用,data
为文件内容。
6、fs.rename(oldPath,newPath,callback)
该方法可用于移动或重命名指定文件。oldPath
参数为该文件原来的路径,newPath
参数为该文件移动或重命名之后的路径,这两个参数都必须能传入文件完整的绝对物理路径。callback
回调参数当中只有一个错误信息参数,一般在oldPath
当中指定的文件不存在或者该操作失败时触发调用。
注意:文件的新路径当中的文件夹必须存在,若不存在则会出现如下的报错信息。
7、fs.mkdir(path[,model],callback)
该方法可以用于创建一个目录文件夹,其中path
为该目录的绝对物理路径,callback
回调函数当中也只有一个错误信息参数,一般在目录创建失败时触发调用。
注意:该方法不能完成多级目录的创建,
node
当中要求要创建的那个文件夹所在的文件夹必须能都存在。否则就会出现报错信息。
8、fs.rmdir(path,callback)
该方法可以用于删除一个空目录。其中path
为该目录的绝对物理路径,callback
回调函数当中也只有一个错误信息参数,一般在该目录不存在或者删除操作失败时触发调用。
注意:该传入的目录路径当中的目录必须能为一个空目录,否则会出现如下的报错信息,也不能完成删除操作。
9、fs.readdir(path,callback)
该方法可以用于读取一个指定目录当中的信息。其中path
为该目录的绝对物理路径,callback
回调函数当中有两个参数err
和files
,err
为错误信息参数,一般在该目录不存在或读取失败时触发调用,files
为一个数组对象,包含该目录下的所有文件夹与文件的名字。(仅为文件夹的名字和文件名,不是路径形式)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。