fs模塊是文件操作的封裝。
fs模塊中所有的操作都提供了異步和同步兩個版本。
fs.readFile
fs.readFile(filename,[encoding],[callback(err,data)]) 是最簡單的讀取文件的函數。
必選參數 filename 表示堯都區的文件名。
可選參數 encoding 表示文件的字符編碼。
vallback 是回調函數,用于接收文件內容。回調函數提供 err 和 data, err表示有沒有錯誤,data是內容。
如果指定了encoing,data是一個解析后的字符串,否則data將會以buffer形式表示的二進制數據。fs.redaFileSync
fs.readFileSync(filename,[encoding])是fs.readFile同步的版本。
讀到的文件內容會以函數返回值的形式返回,有錯誤的話,fs將會拋出異常,需要使用try和catch捕捉異常處理。
注:Node.js中異步函數大多沒有返回值。fs.open
fs.open(path, flags, [mode], [callback(err, fd)])是POSIX open函數的封裝,與C語言標準庫中的fopen函數類似。他接受兩個必選參數,path為文件的路徑,flags可以是以下值。
a. r:以讀取模式打開文件。
b. r:以讀寫模式打開文件。
c. w:以寫入模式打開文件,如果文件不存在則創建
d. w+:以讀寫模式打開文件,如果文件不存在則創建
e. a:以追加模式打開文件,如果文件不存在則創建
f. a+:以讀取追加模式打開文件,如果文件不存在則創建
mode參數用于創建文件時給文件制定權限,默認是0666。回調函數將會傳遞一個文件描述fd。
文件權限指的是 POSIX 操作系統中對文件讀取和訪問權限的規范,通常用一個八進制數來表示。例如 0754 表 示文件所有者的權限是 7 (讀、寫、執行),同組的用戶權限是 5 (讀、執行),其他用戶的權限是 4 (讀), 寫成字符表示就是 -rwxr-xr--。
文件描述符是一個非負整數,表示操作系統內核為當前進程所維護的打開文件的記錄表索引。
- fs.read
fs.read(fd,buffer,offset,length,position,[callback(err,byteRead,buffer)]) 是POSIXread函數的封裝,相比fs.readFile提供了更底層的接口。
fs.read 的功能是從指定的文件描述符fd中讀取數據并寫入buffer指向的緩沖區對象。offset是 buffer的寫入偏移量。length是要從文件中讀取的字節數。position是文件讀取的起始 位置,如果position的值為null,則會從當前文件指針的位置讀取。回調函數傳遞 bytesRead和buffer,分別表示讀取的字節數和緩沖區對象。
read因為它要求你手動管理緩沖區和文件指針,尤其是在你不知道文件大小的時候,會是一件很麻煩的事情。