幾個重要概念,完全是自己的理解。 文件流操作。具體來講就是用createReadStream來代替readFile,這樣做的原因就是讀文件時先要讀入緩衝區buffer,如果文件過大那麼需要的緩衝去也就很大,所以用stream 來代替 。stream大概的工作原理是分成小塊,然後傳輸。 Stream:...
幾個重要概念,完全是自己的理解。
文件流操作。具體來講就是用createReadStream來代替readFile,這樣做的原因就是讀文件時先要讀入緩衝區buffer,如果文件過大那麼需要的緩衝去也就很大,所以用stream 來代替 。stream大概的工作原理是分成小塊,然後傳輸。
Stream: 單詞意思是流的意思。
file=createReadStream(“path”);
創建一個createStream對象---》》》該對象用於讀取文件---》》》該對象可以綁定的事件---》》》
---------------------------------------------------------
@@@事件
readable:黨可以從流中讀取數據時觸發,具體不知道。
data:!!!重要 參數為存放了已讀取的數據的緩衝區對象或字元串。當讀取來自文件、客戶端、伺服器等對對象的新數據時觸發。
end: 讀取數據完成後觸發,不會觸發data 事件
error:你懂得。
close:讀取數據對象關閉時觸發。
@@@方法
read():讀取數據;
setEncoding:編碼方式;
src.pipe(dst):設置一個數據通道,將讀取到的數據傳輸到另一個對象中;
-------------------------------------------------------
var file=require("fs"); var filestream=file.createReadStream('test.txt'); var out=file.createWriteStream("test2.txt"); //console.log(out); filestream.on("data",function(data){ //console.log(data.toString()); out.write(data); });
運行這段代碼會將test2覆蓋為test1;
思考如何解決?!!
file對象的方法:
pipe(),pipe錶面意思是管道的意思。由於有時需要讀寫的文件非常大,不能全部讀入記憶體,這樣便可以createReadStream()來創造一個流式服務,然後再使用pipe()方法讀出 pipe(res)
src.pipe(dst) 可讀流src 到輸出可寫流dst。
感覺一般是當複製來用的。