nj10---文件讀取
阿新 • • 發佈:2017-06-15
-- 沒有 數據 mode 案例 ejs func 所有 地址
介紹:fs模塊是文件操作的封裝,它提供了文件的讀取,寫入,更名,刪除,遍歷目錄,鏈接POSIX文件系統操作。與其他模塊不同的是,fs模塊中所有的操作都提供了異步和同步兩個版本,例如讀取文件內容函數異步方法:readFile(),同步方法readFileSync()。 一、fs.readFile(filename,[encoding],[callback(err,data)])是最簡單的讀取文件的函數。 參數:filename:讀取的文件名。 encoding 文件的字符編碼 ANSI callback 回調函數提供兩個參數err和data,err表示有沒有錯誤發生,data是文件內容。如果指定了encoding,data是一個解析後的字符串,否則將會以buffer形式表示的二進制數據。 案例:readFile.js 二、fs.readFileSync(filename,[encoding]) 同步讀取文件它棘手的參數和fs。readFile相同,而讀取到的文件內容會以函數返回值的形式返回,如果有錯誤發生,fs將拋出異常,你需要try和catch捕獲並處理異常 三、fs.open(path,flags,[mode],[callback(err,fd)])是POSIXopen函數的封裝,與C語言標準庫中的fopen函數類似,它接受兩個必選參數, path為文件路徑, flags可以為以下值: r:以讀取模式打開文件 r+:以讀寫模式打開文件 w:以寫入模式打開文件,如果文件不存在則創建 w+:以讀寫模式打開文件,如果文件不存在則創建 a:以追加模式打開文件,如果文件不存在則創建。 a+:以讀取追加模式打開文件,如果不存在則創建。 mode:用於創建文件時給文件指定權限,默認是0666,回調函數將會傳遞一個文件描述符fd 0666:文件權限值POSIX系統中對文件讀取和訪問權限的規範,通常用八進制數表示,如:0754標識文件所有者權限是7(讀,寫,執行),同組用戶權限是5(讀,執行)其他用戶的權限是4(讀)。 fd:文件描述是一個非負整數,表示操作系統內核為當前進程所維護的打開文件的記錄表索引。 四、fs.read(fd,buffer,offset,length,position,[callback(err,bytesRead,buffer)])是POSIX中read函數的封裝,相比readFile提供了更底層的接口。從指定的文件描述fd中讀取數據並寫入 fd:指定的文件描述 offset是buffer的寫入偏量值 buffer指向的緩存區對象。 length:讀取的字節數 position:文件讀取的起始數,如果為null,則從當前文件指針讀取。 回調函數傳遞err,bytesRead和buffer,分別標識讀取的字節數和緩沖區對象。 API地址:http://nodejs.org/api/fs.html
//引入fs模塊 var fs=require(‘fs‘); //調用讀取文件方法 fs.readFile(‘content.txt‘,function(err,data){ if(err){ console.log(err); }else{ console.log(data);//<Buffer ef bb bf e6 e4 bb b6 e3 80 82> } }); fs.readFile(‘content.txt‘,‘UTF-8‘,function(err,data){ if(err){ console.log(err); }else{ console.log(data);//我是一個文本文件。 } }); try{ var data=fs.readFileSync(‘content.txt‘,‘UTF-8‘); console.log(data+"dddd");//我是一個文本文件。dddd }catch(e){ console.log(e) }
var fs=require(‘fs‘); fs.open(‘content.txt‘,‘r‘,function(err,fd){ if(err){ console.log(err); return; } var buf=new Buffer(8); fs.read(fd,buf,0,8,null,function(err,bytesRead,buffer){ if(err){ console.log(err); return; } console.log(‘bytesRead ‘+bytesRead); console.log(buffer); }); })
nj10---文件讀取