今天学习了node.js的内置对象fs使用方法,所以积累一下心德。。。。
node的文件读取分为同步读取(readFileSync)和异步读取(readFile)
同步和异步的区别所在:
同步,当发起一个调用时,在没有获取结果之前,调用不会返回,直到获取结果。事一件 一 件做,做完一件再做下一件。
异步,当发起一个调用时,在没有获取结果之前,调用就返回了,调用者并不会立即得到结果,而是被调用者通知调用者。通过回调函数处理结果。
同步读取:readFileSync
方法:fs.readFileSync(path[,option])
例子:
// const fs = require('fs');//
//读取当前文件的内容,设置了编码为utf8//
//readFileSync是同步方法,当node执行到此行代码的时候,整个程序等待文件读取完毕后,再往后执行
var fileContent = fs.readFileSync(__filename,
{
encoding:'utf8'
})
console.log(fileContent)
运行结果:
const fs = require('fs');
//读取当前文件的内容,设置了编码为utf8 //readFileSync是同步方法,当node执行到此行代码的时候,整个程序等待文件读取完毕后,再往后执行 var fileContent = fs.readFileSync(__filename,{ encoding:'utf8' }) console.log(fileContent)
大家可以看出node的运行结果是以字符串的性质,将本文件的代码运行出来,它运行的顺序是将fileContent的结果得出来,在输出fileContent的结果
异步读取:readFile(path[,options],callback)
方法:fs.readFile(path[, options], callback)
例子:
const fs = require('fs');
const path = require('path');
let indexJSFileName = path.join(__dirname,'index.js');
fs.readFile(indexJSFileName,{ encoding:'utf8'},function(err,data){
console.log('文件读取完毕,执行回调函数')
if(err){ console.log('文件读取出现异常'+err)
}else{
console.log('文件读取成功'+data)
}
})
console.log('主线程继续执行......')
这里使用的是读取本文件夹中的其他的文件,使用的是异步读取的方法
运行结果:
主线程继续执行......
/Users/apple/Desktop/node/demo2/index.js
文件读取完毕,执行回调函数 文件读取成功
module.exports = { show:function(){ console.log('show index.js') } }
根据运行结果,我们可以看出node执行本代码的顺序是先输出console.log("主线程继续执行"),然后在执行的是本文件加下的index.js里面的内容,这便是异步执行
说到这里你应该对同步和异步读取文件有一些了解,如果有什么问题,欢迎指出哟