和前面的Http、Url模块一样,Fs模块也是node的核心模块之一,主要用于对系统文件及目录进行读写操作。
基本方法
fs.stat
fs.stat可以用来判断是文件还是目录:stats.isFile()用于检测是否是文件,stats.isDirectory()用于检测是否是目录,两个都返回布尔值。
测试前,在fs01.js文件所在的目录下,新建一个文件夹和一个文件
fs.mkdir
fs.mkdir可以用来创建目录,该方法能接受sane参数:path(将创建的目录路径),mode(读写权限,默认0777),callback(异常回调)
运行上面创建目录的代码,正常情况下会在控制台打印出创建成功的语句,并生成相应目录
fs.writeFile
fs.writeFile可以用来创建文件并写入内容。该方法接收4个参数:filename、data、options和callback,其中filename是文件名称,data是将要写入的内容,可以是字符串或者buffer数据,callback传递异常回调,options是一个数组对象,包含encoding(可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored)、mode(文件读写权限,默认值 438)、flag(默认值 ‘w')。
执行上面的代码,将会在执行http目录下生成一个hello.txt的文件,并在这个文件中写入相应内容
如果添加的时候,已经存在改文件,那么新添加的会在原来的基础上进行覆盖。
fs.appendFile
fs.appendFile用于向文件内追加内容(虽然名为追加内容,但实际是覆盖,目前还不是很明白)
在进行内容追加的时候,如果目标文件不存在,会先创建文件,然后添加内容。
fs.readFile
fs.readFile用于读取文件
fs.readdir
fs.readdir用于读取目录,能够同时获取目录下的文件和文件夹,返回一个包含文件名和文件夹名称的数组。
读取同时包含文件夹和文件的目录:
读取只包含文件的目录:
fs.rename
fs.rename用于给文件或文件夹重命名,在给文件重命名的时候,需要保证文件类型一致。
文件夹重命名:
文件重命名:
修改文件类型的重命名:
fs.rmdir
fs.rmdir用于删除文件夹。用该方法来删除文件或者不存在的文件夹的时候会报错。
fs.unlink
fs.unlink用于删除文件。同样,如果使用该方法删除文件夹或者不存在的文件的时候,也会报错。
管道流
fs.createReadStream
fs.createReadStream用于从文件流中读取数据
fs.createWriteStream
fs.createWriteStream用于向文件中写入内容。
其中的writerStream.end()标志文件末尾,监听的finish则是在所有数据都被写入时触发的事件。
利用createReadStream()和createWriteStream()可以实现一个管道流,读取一个文件的内容,并写入到另外一个文件中。