nodejs 中的讀取文件fs模塊示例詳解

什麼是 nodejs?

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境,nodejs 允許 javascript 代碼運行在服務端。

nodejs 不是一門新的編程語言,nodejs是在服務端運行 javascript 的運行環境

運行環境:寫得程序想要運行必須要有對應的運行環境

  • php 代碼必須要有 apache 服務器
  • 在 web 端,瀏覽器就是 javascript 的運行環境
  • 在服務端,nodejs 就是 javascript 的運行環境

javascript 並不隻是能運行在瀏覽器端,瀏覽器端能夠運行 js 是因為瀏覽器有 js 解析器,因此隻需要有 js 解析器,任何軟件都可以運行 js。

nodejs 可以在服務端運行 js,因為 nodejs 是基於 chrome v8 的 js 引擎。

global 模塊-全局變量

Node.js 中的全局對象是 global, 類似於瀏覽器中的window。

常用的global屬性

  • console: 用於打印日志
  • setTimeout/clearTimeout: 設置清除延時器
  • setInterval/clearInterval: 設置清除定時器
  • __dirname: 當前文件的路徑,不包括文件名
  • __filename: 獲取當前文件的路徑,包括文件名

與模塊化相關的,模塊化的時候會用到

  • require
  • exports
  • module

fs模塊

fs 模塊是 nodejs 中最常用的一個模塊,因此掌握 fs 模塊非常的有必要,fs 模塊的方法非常多,用到瞭哪個查哪個即可。

註意:

除瞭 global 模塊中的內容可以直接使用,其他模塊都是需要加載的。 fs 模塊不是全局的,不能直接使用。因此需要導入才能使用。

const fs = require("fs");

讀取文件

語法:fs.readFile(path[, options], callback)

方式一:不傳編碼參數

//參數1: 文件的名字
//參數2: 讀取文件的回調函數
  //參數1:錯誤對象,如果讀取失敗,err會包含錯誤信息,如果讀取成功,err是null
  //參數2:讀取成功後的數據(是一個Buffer對象)
fs.readFile("data.txt", function(err, data){
  console.log(err);
  console.log(data);
});

方式二:傳編碼參數

//參數1: 文件的路徑
//參數2: 編碼,如果設置瞭,返回一個字符串,如果沒有設置,會返回一個buffer對象
//參數3: 回調函數
fs.readFile("data.txt", "utf8",function(err, data){
  console.log(err);
  console.log(data);
});

關於 Buffer 對象

  • Buffer 對象是 Nodejs 用於處理二進制數據的。
  • 其實任意的數據在計算機底層都是二進制數據,因為計算機隻認識二進制。
  • 所以讀取任意的文件,返回的結果都是二進制數據,即 Buffer 對象
  • Buffer 對象可以調用 toString() 方法轉換成字符串。

寫文件

語法:fs.writeFile(file, data[, options], callback)

//參數1:寫入的文件名(如果文件不存在,會自動創建)
//參數2:寫入的文件內容(註意:寫入的內容會覆蓋以前的內容)
//參數3:寫文件後的回調函數
fs.writeFile("2.txt", "hello world, 我是一個中國人", function(err){
  if(err) {
    return console.log("寫入文件失敗", err);
  }
  console.log("寫入文件成功");
});

註意:

寫文件的時候,會把原來的內容給覆蓋掉

追加文件

語法:fs.appendFile(path, data[, options], callback)

//參數1:追加的文件名(如果文件不存在,會自動創建)
//參數2:追加的文件內容(註意:寫入的內容會覆蓋以前的內容)
//參數3:追加文件後的回調函數
fs.appendFile("2.txt", "我是追加的內容", function(err){
  if(err) {
    return console.log("追加文件內容失敗");
  }
  console.log("追加文件內容成功");
})

文件同步與異步的說明

fs 中所有的文件操作,都提供瞭異步和同步兩種方式

異步方式: 不會阻塞代碼的執行

//異步方式
var fs = require("fs");
console.log(111);
fs.readFile("2.txt", "utf8", function(err, data){
  if(err) {
    return console.log("讀取文件失敗", err);
  }
  console.log(data);
});
console.log("222");

同步方式: 會阻塞代碼的執行

//同步方式
console.log(111);
var result = fs.readFileSync("2.txt", "utf-8");
console.log(result);
console.log(222);

總結:

同步操作使用雖然簡單,但是會影響性能,因此盡量使用異步方法,尤其是在工作過程中。

以上就是nodejs 中的讀取文件fs模塊示例詳解的詳細內容,更多關於nodejs 讀取文件fs模塊的資料請關註WalkonNet其它相關文章!

推薦閱讀: