文件 I/O 是由簡單封裝的標準 POSIX 函數(shù)提供的。 nodeJS中通過 require('fs') 使用fs模塊。 所有的方法都有異步和同步的形式。
異步形式始終以完成回調(diào)作為它最后一個參數(shù)。 傳給完成回調(diào)的參數(shù)取決于具體方法,但第一個參數(shù)總是留給異常。 如果操作成功完成,則第一個參數(shù)會是 null 或 undefined
//異步示例var fs = require('fs');fs.unlink('/tmp/hello', function(err){ if (err) throw err; console.log('successfully deleted /tmp/hello');});當使用同步形式時,任何異常都會被立即拋出。 可以使用 try/catch 來處理異常,或讓它們往上冒泡
//同步示例var fs = require('fs');fs.unlinkSync('/tmp/hello');console.log('successfully deleted /tmp/hello');異步方法不保證執(zhí)行順序。 所以下面的例子容易出錯
fs.rename('/tmp/hello', '/tmp/world', function(err){ if (err) throw err; console.log('renamed complete');});fs.stat('/tmp/world', function(err, stats){ if (err) throw err; console.log('stats: ${JSON.stringify(stats)}');});fs.stat 可能在 fs.rename 之前執(zhí)行。正確的方法是把回調(diào)鏈起來
fs.rename('/tmp/hello', '/tmp/world', function(err){ if (err) throw err; fs.stat('/tmp/world', function(err, stats){ if (err) throw err; console.log('stats: ${JSON.stringify(stats)}'); });});推薦開發(fā)者使用這些函數(shù)的異步版本。 同步版本會阻塞整個進程,直到它們完成(停止所有連接)
參數(shù)如下:
path <String> | <Buffer>
flags <String> | <Number>
mode <Integer> 設(shè)置文件模式(權(quán)限和 sticky 位),但只有當文件被創(chuàng)建時才有效。默認為 0666,可讀寫
callback <Function> 該回調(diào)有兩個參數(shù) (err錯誤, fd文件標識,與定時器標識類似)
flags可以是:
'r' - 以讀取模式打開文件。如果文件不存在則發(fā)生異常。
'r+' - 以讀寫模式打開文件。如果文件不存在則發(fā)生異常。
'rs+' - 以同步讀寫模式打開文件。命令操作系統(tǒng)繞過本地文件系統(tǒng)緩存。
'w' - 以寫入模式打開文件。文件會被創(chuàng)建(如果文件不存在)或截斷(如果文件存在)。
'wx' - 類似 'w',但如果 path 存在,則失敗。
'w+' - 以讀寫模式打開文件。文件會被創(chuàng)建(如果文件不存在)或截斷(如果文件存在)。
'wx+' - 類似 'w+',但如果 path 存在,則失敗。
'a' - 以追加模式打開文件。如果文件不存在,則會被創(chuàng)建。
'ax' - 類似于 'a',但如果 path 存在,則失敗。
'a+' - 以讀取和追加模式打開文件。如果文件不存在,則會被創(chuàng)建。
|
新聞熱點
疑難解答
圖片精選