node系統模塊之fs模塊

fs是filesystem的縮寫,該模塊提供本地文件的讀寫能力
文件 I/O 是對標準 POSIX 函數的簡單封裝。
所有的方法都有異步和同步的形式。

簡單的說:fs模塊提供了讀寫文件的方法,並且這些方法都可以選擇同步或者異步;有了讀寫的能力,那麼就可以從服務器的磁盤上拿到文件,返還給前臺也頁面
什麼是同步和異步呢?以前聽過一個老師說了等人喫飯的例子,感覺不是那麼恰當吧;
拿ajax舉個例子
我們都知道瀏覽器解析代碼是從上往下的,路上遇到了一個ajax小姐,這爲小姐跟後臺打call的時間很長,如果瀏覽器先生繼續等着這位小姐打call完畢,再往下解析,這個是同步;如果一看ajax在和後臺打call,那瀏覽器就不等她了,寫着往下去看其它的代碼,等ajax掛掉電話了,瀏覽器在去回過頭去看她,這個是異步;
而讀取文件,你可以等文件讀取完畢,這個是同步,用的是readFile()
不等他讀完,就往下執行,這個是異步;用的是fs.readFileSync(fileName, ‘utf8’);


  • 先說說讀文件是怎麼操作的:
fs.readFile(file_path,(error,data)=>{
    //....用於異步讀文件
})
//第一個參數是文件路徑,第二個是回掉函數
//回掉函數有兩個參數:第一個參數指的是讀取文件失敗情況,
//              第二個參數指的是讀取成功後的操作

readFile方法的第一個參數是文件的路徑,可以是絕對路徑,也可以是相對路徑。注意,如果是相對路徑,是相對於當前進程所在的路徑(process.cwd()),而不是相對於當前腳本所在的路徑。

另外說明一下:如果不適用框架或者其他方法,讀取到的數據是一堆二進制碼;

比如我讀取一個txt文檔,如下圖所示
這裏寫圖片描述

這裏寫圖片描述
有什麼可以提供的方法呢?toString()

const fs = require('fs');

fs.readFile('./www/a.txt',function (err, data){
    if(err){
      console.log('讀取失敗');
    }else{
      console.log((data.toString()));
    }
  })
  • 寫文件的操作
    writeFile方法用於異步寫入文件。writeFileSync方法用於同步寫入文件。
fs.readFile('./image.png', function (err, buffer) {
  if (err) throw err;
  process(buffer);
});

上面代碼中,writeFile方法的第一個參數是寫入的文件名,第二個參數是寫入的字符串,第三個參數是回調函數。

回調函數前面,還可以再加一個參數,表示寫入字符串的編碼(默認是utf8)。

  • 參照阮一峯的JavaScript的標準參考
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章