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)
- var fs=require("fs");
- fs.writeFile('test.txt','Hello Node',function(err
- if(err)throw err;
- console.log('Saved successfully');//檔案被儲存
- });
資料引數可以是string或者是Buffer,編碼格式引數可選,預設為"utf8",回撥函式只有一個引數err。
3.appendFile函式的基本用法(追加寫入)
writeFile函式雖然可以寫入檔案,但是如果檔案已經存在,我們只是想新增一部分內容,它就不能滿足我們的需求了,很幸運,fs模組中還有appendFile函式,它可以將新的內容追加到已有的檔案中,如果檔案不存在,則會建立一個新的檔案。使用方法如下:
例:fs.appendFile(檔名,資料,編碼,回撥函式(err));
- var fs=require("fs");
- fs.appendFile('test.txt','data to append',function(err){
- if(err)throw err;
- //資料被新增到檔案的尾部
- console.log('The "data to append" was appended to file!');
- });
編碼格式預設為"utf8"。
4.exists函式的基本用法(檔案是否存在)如何檢查一個檔案是否存在呢?我想exists函式可以幫助你,用法如下:
例:fs.exists(檔案,回撥函式(exists));
exists的回撥函式只有一個引數,型別為布林型,通過它來表示檔案是否存在。
- var fs=require("fs");
- fs.exists('/etc/passwd',function(exists){
- console.log(exists ?"存在":"不存在!");
- });
5.rename函式的基本用法(修改名稱)
修改檔名稱是我們經常會遇見的事情,rename函式提供修改名稱服務:
- var fs=require("fs");
- fs.rename(舊檔案,新檔案,回撥函式(err){
- if(err)throw err;
- console.log('Successful modification,');
- });
讀取檔案是最常用到的功能之一,使用fs模組讀取檔案語法如下:
例:fs.readFile(檔案,編碼,回撥函式);
- var fs =require('fs');
- fs.readFile(檔名,function(err, data){
- if(err)throw err;
- console.log(data);
- });
回撥函式裡面的data,就是讀取的檔案內容。
7.unlink函式的基本用法 (刪除檔案)面對一堆垃圾的檔案總是有想刪除的衝動,我有強迫症?你才有呢。
好在有unlink函式,終於得救了,示例如下:
例:fs.unlink(檔案,回撥函式(err));
- var fs =require('fs');
- fs.unlink(檔案,function(err){
- if(err)throw err;
- console.log('successfully deleted');
- });
除了針對檔案的操作,目錄的建立、刪除也經常遇到的,下面我們來看看node.js中如何建立目錄:
- fs.mkdir(路徑,許可權,回撥函式(err));
引數
- 路徑:新建立的目錄。
- 許可權:可選引數,只在linux下有效,表示目錄的許可權,預設為0777,表示檔案所有者、檔案所有者所在的組的使用者、所有使用者,都有許可權進行讀、寫、執行的操作。
- 回撥函式:當發生錯誤時,錯誤資訊會傳遞給回撥函式的err引數。
刪除目錄也是必不可少的功能,rmdir函式可以刪除指定的目錄:
例:fs.rmdir(路徑,回撥函式(err));
- var fs =require('fs');
- fs.rmdir(path,function(err){
- if(err)throw err;
- console.log('ok');
- });
如果要讀取目錄下所有的檔案應該怎麼辦呢?readdir函式可以讀取到指定目錄下所有的檔案,示例如下:
- var fs =require('fs');
- fs.readdir(目錄,回撥函式(err,files));
回撥函式 (callback) 接受兩個引數 (err, files) 其中 files 是一個儲存目錄中所包含的檔名稱的陣列,陣列中不包括 '.' 和 '..'。