fs是node中重要的系统模块,负责文件的读写,而与其他js模块不同的是,fs模块有同步与异步两种操
作,不多哔哔,上代码看看怎么玩
readFile 异步
首先我们介绍一下fs中readFile,也就是 读 命令
/*
该命令接受三个参数
1. 读取文件位置
2. 文件编码 ‘utf-8’
3. 回调函数 ,回调函数接收两个参数 err 与 data 如果读取正常则 err 为undefined 否则err为错
误代码
*/
//首先引入 fs 模块
var fs = require('fs);
//然后我们将从当前目录下的sample.txt文件中读取内容,我们提前将sample文件内容 写为 ’van‘
fs.readFile('sample.txt','utf-8',function(err,data){
if(err){
//打印错误原因
console.log(err);
}else {
//打印sample文件下的内容
console.log(data);
}
})
//如果读取的是二进制文件,则可以不用添加utf-8
readFileSync 同步
然后介绍一下同步读取,同步读取的话形式比异步读取更加简单
//首先还是引入fs模块
var fs = require('fs');
//因为同步函数没有回调函数,所以我们要用data变量去把命令读取的内存存下来
var data = fs.readFileSync('sample.txt','utf-8');
console.log(data);
//这样就大功告成了,
//但是到这,如果当前目录下面没有sample文件怎么办呢?我们这里已经没有err 了
//所以我们要添加一个错误捕获 try catch
try{
var data = fs.readFileSync('sample.txt','utf-8');
console.log(data);
}catch(e){
console.log(e);
}
//这样就可以安心使用readFileSync了
writeFile
然后就轮到 写 命令了 ,这个命令与读命令很相似直接上代码吧
/*
这个函数同样接受三个参数
1. 要写入的文件的位置
2. 写入的数据 data
3. 回调函数,同样回调函数接受一个参数 err
*/
var fs = require('fs');
var data = "i'm van "
fs.writeFile('sample.txt',data,funciton(err){
if(err){
console.log('写入失败')
}else {
console.log('写入成功')
}
})
writeFileSync
//最终版本
var fs = require('fs');
var data = "i'm van ";
try{
fs.writeFileSync('sample.txt',data);
console.log('写入成功');
}catch(e){
console.log('写入失败');
}
Steam流
从流中读入数据
var fs = require('fs');
var rs = fs.createReadStream('sample.txt','utf-8');
rs.on('data',function(chunk){
console.log('data');
console.log(chunk.length);
console.log(chunk);
})
rs.on('end',function(){
console.log('end');
})
rs.on('error',function(err){
console.log(err);
})
写入流
var fs = require('fs');
var ws = fs.createWriteStream('sample.txt');
var data = "i am van";
ws.write(data);
ws.on('error',function(e){
console.log(e);
})
ws.on('finish',funciton(){
console.log('finish');
})