1. 程式人生 > >Node.js-入門三--檔案I/O

Node.js-入門三--檔案I/O

1.檔案I/O fs模組的基本用法

開發中我們經常會有檔案I/O的需求,node.js中提供一個名為fs的模組來支援I/O操作,fs模組的檔案I/O是對標準POSIX函式的簡單封裝。

2.writeFile函式的基本用法 (寫入檔案)

檔案I/O,寫入是必修課之一。fs模組提供writeFile函式,可以非同步的將資料寫入一個檔案, 如果檔案已經存在則會被替換。用法如下:

例:fs.writeFile(filename, data, callback)

  1. var fs=require("fs");
  1. fs.writeFile('test.txt','Hello Node',function(err
    ){
  1. if(err)throw err;
  1. console.log('Saved successfully');//檔案被儲存
  1. });

資料引數可以是string或者是Buffer,編碼格式引數可選,預設為"utf8",回撥函式只有一個引數err。

3.appendFile函式的基本用法(追加寫入)

writeFile函式雖然可以寫入檔案,但是如果檔案已經存在,我們只是想新增一部分內容,它就不能滿足我們的需求了,很幸運,fs模組中還有appendFile函式,它可以將新的內容追加到已有的檔案中,如果檔案不存在,則會建立一個新的檔案。使用方法如下:

例:fs.appendFile(檔名,資料,編碼,回撥函式(err));

  1. var fs=require("fs");
  2. fs.appendFile('test.txt','data to append',function(err){
  3. if(err)throw err;
  4. //資料被新增到檔案的尾部
  5. console.log('The "data to append" was appended to file!');
  6. });

編碼格式預設為"utf8"。

4.exists函式的基本用法(檔案是否存在)

如何檢查一個檔案是否存在呢?我想exists函式可以幫助你,用法如下:

例:fs.exists(檔案,回撥函式(exists));

exists的回撥函式只有一個引數,型別為布林型,通過它來表示檔案是否存在。

  1. var fs=require("fs");
  2. fs.exists('/etc/passwd',function(exists){
  3. console.log(exists ?"存在":"不存在!");
  4. });

5.rename函式的基本用法(修改名稱)

修改檔名稱是我們經常會遇見的事情,rename函式提供修改名稱服務:

  1. var fs=require("fs");
  2. fs.rename(舊檔案,新檔案,回撥函式(err){
  3. if(err)throw err;
  4. console.log('Successful modification,');
  5. });
6.readFile函式的基本用法        (讀取檔案)                            

讀取檔案是最常用到的功能之一,使用fs模組讀取檔案語法如下:

例:fs.readFile(檔案,編碼,回撥函式);

  1. var fs =require('fs');
  2. fs.readFile(檔名,function(err, data){
  3. if(err)throw err;
  4. console.log(data);
  5. });

回撥函式裡面的data,就是讀取的檔案內容。

7.unlink函式的基本用法                        (刪除檔案)            

面對一堆垃圾的檔案總是有想刪除的衝動,我有強迫症?你才有呢。

好在有unlink函式,終於得救了,示例如下:

例:fs.unlink(檔案,回撥函式(err));

  1. var fs =require('fs');
  2. fs.unlink(檔案,function(err){
  3. if(err)throw err;
  4. console.log('successfully deleted');
  5. });
8.mkdir函式的基本用法                             (建立目錄)  

除了針對檔案的操作,目錄的建立、刪除也經常遇到的,下面我們來看看node.js中如何建立目錄:

  1. fs.mkdir(路徑,許可權,回撥函式(err));

引數

  1. 路徑:新建立的目錄。
  2. 許可權:可選引數,只在linux下有效,表示目錄的許可權,預設為0777,表示檔案所有者、檔案所有者所在的組的使用者、所有使用者,都有許可權進行讀、寫、執行的操作。
  3. 回撥函式:當發生錯誤時,錯誤資訊會傳遞給回撥函式的err引數。
9.rmdir函式的基本用法                         (刪除目錄)

刪除目錄也是必不可少的功能,rmdir函式可以刪除指定的目錄:

例:fs.rmdir(路徑,回撥函式(err));

  1. var fs =require('fs');
  2. fs.rmdir(path,function(err){
  3. if(err)throw err;
  4. console.log('ok');
  5. });
10.readdir函式的基本用法                         (讀取目錄)

如果要讀取目錄下所有的檔案應該怎麼辦呢?readdir函式可以讀取到指定目錄下所有的檔案,示例如下:

  1. var fs =require('fs');
  2. fs.readdir(目錄,回撥函式(err,files));

回撥函式 (callback) 接受兩個引數 (err, files) 其中 files 是一個儲存目錄中所包含的檔名稱的陣列,陣列中不包括 '.' 和 '..'。