Node.js中fs模塊總結

fs模塊

在nodejs中,提供了fs模塊,這是node的核心模塊

注意:

  1. 除了global模塊中的內容可以直接使用,其餘模塊都是需要加載的
  2. fs模塊不是全局模塊,所以需要導入
const fs = require('fs');

讀取文件

語法:fs.readFile(path[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:字符集(帶[]表示可傳可不傳)
第三個參數:回調函數

方式一:不傳編碼參數

fs.readFile('data.txt', function (err, data) {
  if (err) {
    return console.log(err);
  }
  console.log(data.toString());//獲取到buff對象,通過調用toString()轉成字符串
});
//沒設置編碼,此時會返回一個二進制的buffer對象

關於buffer對象

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

方式二:傳編碼參數

fs.readFile('data.txt','utf8' function (err, data) {
  if (err) {
    return console.log(err);
  }
  console.log(data);//正常輸出字符串
});

寫文件

語法:fs.writeFile(file, data[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:寫入的內容
第三個參數:字符集(帶[]表示可傳可不傳)
第四個參數:回調函數

fs.writeFile('data.txt', 'hello world', function(err){
  if(err) {
    return console.log("寫入文件失敗", err);
  }
  console.log("寫入文件成功");
});

注意:

  1. 寫文件的時候,會把原來的內容給覆蓋掉
  2. 如果找不到寫入文件,會默認創建一個文件

追加文件

語法:fs.appendFile(path, data[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:追加的內容
第三個參數:字符集(帶[]表示可傳可不傳)
第四個參數:回調函數

fs.appendFile('data.txt', '我是追加的內容', function(err){
  if(err) {
    return console.log("追加文件內容失敗");
  }
  console.log("追加文件內容成功");
})

注意:

  1. 如果找不到追加內容的文件,會默認創建一個文件

文件同步與異步的說明

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

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

//異步方式
var fs = require("fs");

console.log(111);
fs.readFile('data.txt', 'utf8', function(err, data){
  if(err) {
    return console.log("讀取文件失敗", err);
  }
  console.log(data);
});
console.log("222");

//先輸出111 ,在輸出222 ,最後輸出data

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

//同步方式
console.log(111);
var result = fs.readFileSync('data.txt', 'utf8');
console.log(result);
console.log(222);

//先輸出111,在輸出result,最後輸出222

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

其他api

方法 描述
fs.readFile(path, callback) 讀取文件內容(異步)
fs.readFileSync(path) 讀取文件內容(同步)
fs.writeFile(path, data, callback) 寫入文件內容(異步)
fs.writeFileSync(path, data) 寫入文件內容(同步)
fs.appendFile(path, data, callback) 追加文件內容(異步)
fs.appendFileSync(path, data) 追加文件內容(同步)
fs.rename(oldPath, newPath, callback) 重命名文件(異步)
fs.renameSync(oldPath, newPath) 重命名文件(同步)
fs.unlink(path, callback) 刪除文件(異步)
fs.unlinkSync(path) 刪除文件(同步)
fs.mkdir(path, mode, callback) 創建文件夾(異步)
fs.mkdirSync(path, mode) 創建文件夾(同步)
fs.rmdir(path, callback) 刪除文件夾(異步)
fs.rmdirSync(path) 刪除文件夾(同步)
fs.readdir(path, option, callback) 讀取文件夾內容(異步)
fs.readdirSync(path, option) 讀取文件夾內容(同步)
fs.stat(path, callback) 查看文件狀態(異步)
fs.statSync(path) 查看文件狀態(同步)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章