Node.js讀取文件內容包括同步和異步兩種方式。
創(chuàng)新互聯建站專業(yè)為企業(yè)提供閻良網站建設、閻良做網站、閻良網站設計、閻良網站制作等企業(yè)網站建設、網頁設計與制作、閻良企業(yè)網站模板建站服務,十載閻良做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
1、同步讀取,調用的是readFileSync
var rf=require("fs"); var data=rf.readFileSync("test","utf-8"); console.log(data); console.log("READ FILE SYNC END");
輸出結果,先內容,后end
2、異步讀取,調用readFile
var rf=require("fs"); rf.readFile("test",'utf-8',function(err,data){ if(err){ console.log("error"); }else{ console.log(data); } }); console.log("READ FILE ASYNC END");
輸入結果先end,后內容
同步式讀取文件的方式比較容易理解,將文件名作為參數傳入 fs.readFileSync 函數,阻塞等待讀取完成后,將文件的內容作為函數的返回值賦給 data 變量,接下來控制臺輸出 data 的值,最后輸出 end。
異步式讀取文件就稍微有些違反直覺了,end先被輸出。要想理解結果,我們必須先知道在 Node.js 中,異步式 I/O 是通過回調函數來實現的。fs.readFile 接收了三個參數,第一個是文件名,第二個是編碼方式,第三個是一個函數,我們稱這個函數為回調函數。
JavaScript 支持匿名的函數定義方式, 譬如例子中回調函數的定義就是嵌套在fs.readFile 的參數表中的。
上面異步讀取readFile中的參數回調函數可以拿出來。
var rf=require("fs"); function callBack(err,data){ if(err){ console.log("error"); }else{ console.log(data); } } rf.readFile("test","utf-8",callBack); console.log("READ FILE ASYNC END");
fs.readFile 調用時所做的工作只是將異步式 I/O 請求發(fā)送給了操作系統(tǒng),然后立即返回并執(zhí)行后面的語句,執(zhí)行完以后進入事件循環(huán)監(jiān)聽事件。當 fs 接收到 I/O 請求完成的事件時,事件循環(huán)會主動調用回調函數以完成后續(xù)工作。
整個項目文件路徑如圖所示。tes為要讀取的文件。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯。