最近学习了node的fs模块,在此与大家分享所得。不妥之处请诸位道友批评指正。
1.文件操作的同步与异步
当今异步操作横行编程界,node也是以异步编程为大家所称道。在node的文件操作中也是
以异步为主,同步为辅(虽然存在感低,但我也是存在的)。
异步方法:readFile(......),writeFile(......),appendFile(......),open(......) ;
同步方法:在异步基础上加sync如readFileSync(..)
大概介绍了文件的操作方式。
2.文件的读写
读写全部文件(异步):
//options参数可传入flag(文件操作)和encoding(编码格式)
var options = {
flag: 'r',
encoding: 'utf8'
};
//fs读文件 参数:path(文件名/文件路径),callbackFunc(回调函数)
fs.readFile('./html/index.html', options, function (err, data) {
if (!err) {
//fs写入文件 参数:path(文件名/文件路径),data(传入的数据,可以是字符串或Buffer对象),callbackFunc(回调函数)
fs.writeFile('./html/index2.html', data, function (err) {
if (!err)console.log('文件写入成功!');
});
} else {
console.log(err);
}
});
读写全部文件(同步):
var html = fs.readFileSync('./html/index.html', 'utf8');
fs.writeFileSync('./html/index2.html', html);
//读写部分文件:
//创建存储数据的Buffer对象
var fdBufR = new Buffer(100);
var fdBufW = new Buffer('写入文件');
//打开需要操作的文件position读取文件的开始位置
fs.open('./html/index.html', 'w', function (err, fd) {
if (!err) {
//向打开的文件中写入数据
fs.write(fd, fdBufW, 0, 3, position, function (err, bytesWrite, buffer) {
console.log('部分文件寫入成功,已经将fdBufW中的数据写入index文件中');
fs.close(fd);//关闭文件
})
}
});
//打开需要操作的文件position写入文件的开始位置
fs.open('./html/index2.html', 'r', function (err, fd) {
if (!err) {
//读取打开文件中的数据
fs.read(fd, fdBufR, 0, 100, position, function (err, bytesRead, buffer) {
if (!err)console.log('部分文件读取成功,已经保存到buffer对象中!');
fs.close(fd);//关闭文件
});
}
});