node引用fs模块,异步读取文件:
'use strict'
var fs =require('fs');
fs.readFile('example.txt','utf-8',function(err,data)
{
if (err) {
console.log(err)
}else{
console.log(data)
}
})
node引用fs模块,异步读取二进制文件(图片):
fs.readFile('add_func.png',function(err,data)
{
if (err) {
console.log(err)
}else{
console.log(data)
console.log(data.length+'bytes')
}
})
当读取二进制文件,不传入文件编码时,回调函数的data参数将返回一个buffer对象,在node中buffer对象就是一个包含零个或任意个字节的数组(注意:和Array不一样),buffer对象可以和string转换。
data.toString('utf-8');
Buffer.from(aa,'utf-8')
fs同步读取文件:
var dataSync =fs.readFileSync('add_func.png','utf-8')
console.log(dataSync);
try{
var data_ =fs.readFileSync('add_func.png','utf-8')
console.log(data_)
}catch(error){
console.log(error)
}
fs写入文件:
var data_write ='hello nodeJs456';
fs.writeFile('write.txt',data_write,function(err)
{
if (err) {
console.log(err)
}else{
console.log('ok')
}
})
fs同步写入文件:
fs.writeFileSync('write.txt',data_write+'123');
如果我们要获取文件的大小、创建时间等信息,可以使用fs.stat(),返回一个stat对象,包含文件详细信息
fs.stat('write.txt',function(err,stat) {
if (err) {
console.log(err)
}else{
console.log(stat.isFile())
}
})
在fs模块中提供同步方法是为了方便使用,但是由于node环境执行的javascript代码是服务端代码,绝大部分是在服务器运行时期需要反复执行的业务逻辑代码,所以必须使用异步,否则同步代码执行期间,服务器将停止响应。
服务器启动时读取配置文件或者,服务器结束时需要写入状态文件,可以用同步代码,因为只在启动和结束执行一次,所以不影响。