您好,登錄后才能下訂單哦!
Node.js讀取文件內容包括同步和異步兩種方式。
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 請求發送給了操作系統,然后立即返回并執行后面的語句,執行完以后進入事件循環監聽事件。當 fs 接收到 I/O 請求完成的事件時,事件循環會主動調用回調函數以完成后續工作。
整個項目文件路徑如圖所示。tes為要讀取的文件。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。