溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Node.js讀取文件內(nèi)容示例

發(fā)布時間:2020-09-20 05:04:07 來源:腳本之家 閱讀:1814 作者:第2016換個昵稱 欄目:web開發(fā)

Node.js讀取文件內(nèi)容包括同步和異步兩種方式。

1、同步讀取,調(diào)用的是readFileSync

var rf=require("fs"); 
var data=rf.readFileSync("test","utf-8"); 
console.log(data); 
console.log("READ FILE SYNC END"); 

輸出結(jié)果,先內(nèi)容,后end

Node.js讀取文件內(nèi)容示例

2、異步讀取,調(diào)用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"); 

輸入結(jié)果先end,后內(nèi)容

Node.js讀取文件內(nèi)容示例

同步式讀取文件的方式比較容易理解,將文件名作為參數(shù)傳入 fs.readFileSync 函數(shù),阻塞等待讀取完成后,將文件的內(nèi)容作為函數(shù)的返回值賦給 data 變量,接下來控制臺輸出 data 的值,最后輸出 end。

異步式讀取文件就稍微有些違反直覺了,end先被輸出。要想理解結(jié)果,我們必須先知道在 Node.js 中,異步式 I/O 是通過回調(diào)函數(shù)來實現(xiàn)的。fs.readFile 接收了三個參數(shù),第一個是文件名,第二個是編碼方式,第三個是一個函數(shù),我們稱這個函數(shù)為回調(diào)函數(shù)。

JavaScript 支持匿名的函數(shù)定義方式, 譬如例子中回調(diào)函數(shù)的定義就是嵌套在fs.readFile 的參數(shù)表中的。
上面異步讀取readFile中的參數(shù)回調(diào)函數(shù)可以拿出來。

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 調(diào)用時所做的工作只是將異步式 I/O 請求發(fā)送給了操作系統(tǒng),然后立即返回并執(zhí)行后面的語句,執(zhí)行完以后進(jìn)入事件循環(huán)監(jiān)聽事件。當(dāng) fs 接收到 I/O 請求完成的事件時,事件循環(huán)會主動調(diào)用回調(diào)函數(shù)以完成后續(xù)工作。

整個項目文件路徑如圖所示。tes為要讀取的文件。

Node.js讀取文件內(nèi)容示例

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI