文章目录
一、什么是fs文件系统模块
fs模块是Node.js官方提供的,用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
使用fs模块操作文件时,需要先导入它,代码如下:
const fs = require(‘fs’)
二、同步与异步
(1)同步:程序在涉及到文件IO时,必须等到文件IO操作结束后再执行后续的操作。
(2)异步:程序在涉及到文件IO时,不等待文件IO操作结束,继续执行后续的操作,当文件IO操作结束后系统会通知程序处理文件IO的结果。
所有文件系统操作都具有同步和异步形式,供开发者选择。
异步的形式总是将完成回调作为其最后一个参数。传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。如果操作成功完成,则第一个参数是null或undefined。
三、回调函数
所谓“回调”,就是”回头再调”。回调函数并不是马上调用,而是需要等到事件触发了以后再执行。回调是一个异步等效的功能,在完成特定任务后回调函数被调用。
四、读取指定文件中的内容
1、fs.readFile()
用于异步读取数据。 - - - - 也叫非阻塞方式读
语法格式如下:
fs.readFile(path[,options],callback);
path:必选参数,字符串,表示文件的路径,可以是绝对路径,也可以是相对路径。注意,如果是相对路径,是相对于当前进程所在的路径(process.cwd()),而不是相对于当前脚本所在的路径。
option:可选参数,表示以什么编码格式来读取文件
callback:必选参数,文件读取完成后,通过回调函数拿到读取的结果,该函数的第一个参数是发生错误时的错误对象,第二个参数是代表文件内容的Buffer实例。
举例如下:
//导入fs模块
const fs = require('fs');
//调用readFile()方法读取文件
fs.readFile('./fs1.txt','utf8',function(err,dataStr){
console.log(err);
console.log('-----');
console.log(dataStr);
});
console.log('异步读取文件')
//err代表打印失败后的结果,dataStr代表打印成功后的结果
成功时的结果如下:
此时err为null,dataStr为打印出的结果,且我们可以发现,先打印出了“异步读取文件”的结果,这就可以看出fs.readFile()用于异步读取数据的特性,在涉及到文件IO时,它不等待文件IO操作结束,会继续执行后续的操作,当文件IO操作结束后系统会通知程序处理文件IO的结果。
失败后的结果如下,此时我们故意写一个错误的文件名。
//导入fs模块
const fs = require('fs');
//调用readFile()方法读取文件
fs.readFile(__dirname+'/fs2.txt','utf8',function(err,dataStr){
console.log(err);
console.log('-----');
console.log(dataStr);
});
console.log('异步读取文件')
//err代表打印失败后的结果,dataStr代表打印成功后的结果
则err会打印出错误对象,dataStr结果为undefined
2、判断文件是否读取成功
可以通过err对象是否为null,从而判断文件读取的结果。
//判断文件是否读取成功
//导入fs模块
const fs = require('fs');
fs.readFile('./fs1.txt','utf8',function (err,result){
if(err){
console.log('读取失败:'+err.message)
}else{
console.log('读取成功')
console.log(result)
}
})
读取成功时打印结果如下: