Stream是nodeJS的一个核心模块,在nodeJS中应用很是普遍,好比HTTP 服务器request和response对象都是流node
可读流的用法缓存
let fs = require('fs');
let path = require('path');
let rs = fs.createReadStream(path.join(__dirname, '1.txt'), {
flags: 'r', // 文件的操做是读取操做
encoding: 'utf8', // 默认是null null表明的是buffer
autoClose: true, // 读取完毕后自动关闭
highWaterMark: 3, // 默认是64k 64*1024b
start: 0,
end:3
});
复制代码
默认状况下不会将文件中的内容输出
内部会先建立一个Buffer先读取3b(三字节)
若是你不进行操做,默认是非流动模式,暂停状态
当监听data事件后,开始发射数据bash
rs.on('data', function (data) {
console.log(data);
//读取
});
复制代码
暂停方法 暂停data事件触发服务器
rs.pause();
复制代码
恢复方法 恢复data事件触发ui
rs.resume();
复制代码
除了data事件,可读流还能监听其余一些事件编码
end事件(暂停)
该事件会在读完数据后被触发spa
rs.on('end', function () {
console.log('读取完成');
});
复制代码
error事件
若是有错误会会触发code
rs.on('error', function (err) {
console.log(err);
});
复制代码
open事件
打开文件对象
rs.on('open', function () {
console.log('文件打开');
});
复制代码
close事件
关闭文件事件
rs.on('close', function () {
console.log('文件关闭');
});
复制代码
设置编码
rs.setEncoding('utf8');
复制代码
可写流的用法
let fs = require('fs');
let ws = fs.createWriteStream('./4.txt', {
flages: 'w', //读写标识符
mode: 0o666, // 权限
autoClose: true, // 是否自动关闭
highWaterMark: 3, // 默认是16k
encoding: 'utf8', // 编码格式
start: 0 //从哪开始
});
复制代码
相对于可读流,可写流的方法就少多了
write方法
写入后会返回一个布尔值,来判断系统缓存区是否满了
let flag = ws.write('写入的内容','utf8',function(){});
console.log(flag);
复制代码
end方法
关闭方法,再关闭前能够最后传入一次数据
ws.write('最后写入的内容','utf8',function(){});
复制代码
drain方法
抽干方法 当写入完后,会触发 必须缓存区满了被清空后才会出发drain事件
ws.on('drain', function () {
console.log('抽干')
})
复制代码