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代码是服务端代码,绝大部分是在服务器运行时期需要反复执行的业务逻辑代码,所以必须使用异步,否则同步代码执行期间,服务器将停止响应。
服务器启动时读取配置文件或者,服务器结束时需要写入状态文件,可以用同步代码,因为只在启动和结束执行一次,所以不影响。