可讀流/可寫流

/*---------------------------- 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();});
相關文章
相關標籤/搜索