Node中的文件操作
fs模块是node非常重要的模块,能体现出node的优势。
因为出于安全策略,如果javasript能随意操作文件,那你打开任何一个网页,都会有信息泄露,和中毒等风险。因此作为使用javascript语言的后台nodejs可以为前端工程师提供文件操作方式。
当今异步操作横行编程界,node也是以异步编程为大家所称道。在node的文件操作中也是以异步为主,同步为辅(虽然存在感低,但也是存在的)。
异步方法:readFile(......)
,writeFile(......)
,appendFile(......)
,open(......)
;
同步方法:在异步基础上加sync如readFileSync(..)
。
如同Java中的文件操作一样,在Node中,也提供了针对文件的操作。在Node中,文件操作默认使用的是UTF-8编码,这意味着我们无须再去处理中文乱码的问题。
针对文件操作,Node提供了一个fs模块来支持我们操作文件,fs模块是对标准POSIX函数的简单封装。在使用这个模块时,我们只需要声明引用即可。
var fs= require("fs")
;
然后我们就可以调用fs模块中的方法进行文件操作。
writeFile:异步向文件中写入数据,如果文件不存在,则会自动创建文件;如果文件存在,则会把文件替换掉。如fs.writeFile(文件名,数据,回调函数(err)),其中数据参数可以是String或者Buffer类型,编码格式是可选的,默认是UTF-8,回调函数只有一个参数err。
appenFile
:向文件中追加内容。如果不存在该文件,则会自动创建新文件;如果已经存在,那就直接在文件尾部追加数据。如fs.appendFile(文件名,数据,编码,回调函数(err))
,编码格式默认为UTF-8。
exists
:判断文件是否存在。如fs.exists(文件,回调函数(exists))
,该方法的回调函数只有一个参数,是一个boolean类型,通过该值来判断是否存在。
rename
:用来重命名文件,也可以复制文件到指定的目录下。如果是重命名文件,则是fs.rename(旧文件名,新文件名,回调函数(err))
;如果是复制文件,则是fs.rename(旧文件的路径,新路径,回调函数(err))
,注:复制文件时,需要在路径后面加上文件名,否则会出现错误。
readFile
:见名之意,这个方法是用来读取文件的,把文件读取到缓冲区中,该方法是非阻塞的。fs.readFile(文件名,回调函数(err,data))
。
readFileSync
:这个方法也是用来读取文件的,把文件读取到缓冲区中,但是这个方法是线程阻塞的。fs.readFileSync(文件名)
。
read
:不断地将文件中的一小块内容读入缓存区,最后从该缓存区中读取文件内容。fs.read(fd, buffer, offset, length, position, callback)
。
unlink
:删除文件,不是用来删除文件夹。fs.unlink(文件,回调函数(err))
。
mkdir
:创建目录。fs.mkdir(路径,权限,回调函数(err))
:路径是新创建的目录;权限是可选参数,并且只在Linux目录下有效,默认是0777,即所有人都拥有读写执行的权限;回调函数则是在错误发生时,错误信息会传递给回调函数的err参数。
rmdir
:删除目录,fs.rmdir(路径,回调函数(err))
,删除目录时,需要确定被删除的目录是空目录,否则无法删除。
readdir
:读取指定目录下所有的文件,fs.readdir(目录,回调函数(err,files))
:回调函数中的files是一个数组,这个数组是目录中所包含的文件名称。
在Node中,还有很多的文件操作方法,详情可借鉴http://www.runoob.com/nodejs/nodejs-fs.html