可读流/可写流

/*---------------------------- createReadStream ----------------------------------*/

// 他不关心文件整体多大, 只关心每次读到的内容 。 有序的
// 默认读取编码是 null -> buffer
//var rs = fs.createReadStream("./name.txt");

/*
// highWaterMark 以字节为单位 64k
// highWaterMark:1 每次只读一个
var rs = fs.createReadStream("./name.txt",{ highWaterMark:3 });
console.log( rs );

// 监听事件的触发 流继承了事件
// 从非流动模式 --> 流动模式 以最快的速度读取到内存中
rs.on( 'data' , function (data) { //内部会emit("data")
rs.pause() //停止触发data事件
console.log( data.toString() )
});

setTimeout(function () {
rs.resume() //恢复触发data事件
},1000)
*/

// 合并buffer
//Buffer.concat( );

/*
var rs = fs.createReadStream("./name.txt",{ highWaterMark:1 });
var arrr = [];
rs.on( 'data' , function (data) {

/!* rs.pause(); //停止触发data事件
//水位线过小,拼接成字符串会成乱码
console.log( data.toString() )*!/

arr.push(data)
});
setInterval(function () {
rs.resume() //恢复触发data事件
},1000);
rs.on('end',function (err) {
console.log(Buffer.connect(arr).toString() )
console.log('读取完毕')
});
*/


// on('data') on('end') push() resume() on('error')
// 用流读取文件是异步方法


/*------------------------------ createWriteStream -------------------------------*/
// 返回可写流
// highWaterMark 1024b * 16
// 默认格式是 utf8
var ws = fs.createWriteStream('./age.txt');
// 写中的两个方法 write end
ws.write( "buufer or 字符串" ); //只能写 字符串 或者 buffer格式
ws.end( "关闭文件" ); //如果end传入参数,默认调用write方法
// 关闭文件,写也是异步的,只要调用end方法,会将没写的内容全部写完 之后关闭



/*
// 可写流的大小16k ,
var ws = fs.createWriteStream('./age.txt',{ highWaterMark:1 });
var flag = ws.write("1",function () {
console.log("写一次")
});
console.log("写入:");
// flag 表示是否还能写入, 返回false 东西也不会丢失
ws.end("1");
// ws.end("22")// 不能再关闭后在写内容
*/


// 写入已满的时候, 等待下一次写入 ,直到写入完毕
var ws = fs.createWriteStream('./age.txt',{ highWaterMark:1 });

var index = 0;
function write() {
var flag = true;
while ( index<10 && flag){ //当index<10 或者flag为true的时候可以写
flag = ws.write( index ++ + '')
}
}
write();
ws.on("drain",function () {
console.log( '吃完啦');
write();
});



转载于:https://www.cnblogs.com/x-hui/p/6509767.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值