可读流/可写流

/*---------------------------- 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// 默认格式是 utf8var ws = fs.createWriteStream('./age.txt');// 写中的两个方法  write  endws.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();});
相关文章
相关标签/搜索