NodeJS系列之三:NodeJS內建fs模組初識
阿新 • • 發佈:2019-02-03
1.fs模組介紹
fs
全稱是file system
(檔案系統),它是NodeJS提供的檔案操作API。fs模組用於對系統檔案及目錄進行讀寫操作,是一個非常重要的模組,對檔案的操作都基於它。該模組的所有方法都有同步和非同步兩種方式,下面先簡單介紹一下fs模組的常用方法。
2.使用fs模組進行簡單的讀寫操作
- 讀取檔案 => readFile(非同步讀取) 和 readFileSync(同步讀取)
fs.readFile(file_name[, options],function(err,data){
//非同步讀取帶兩個必選引數和一個可選引數
//必選引數:file_name檔案路徑名,callback回撥函式,回撥函式第一個引數是讀取錯誤資訊,第二個是檔案裡面的資料
//一個可選引數:options該引數是一個物件,包含 {encoding, flag}。預設編碼為二進位制, flag 為 'w'
})
fs.readFileSync(file_name[, options])//同步讀取帶一個必選引數和一個可選引數,同上
簡單實現如下:
var fs=require('fs'); //引入fs模組
//非同步讀取
fs.readFile('aaa.txt',function(err,data){
if(err){
console.log('讀取錯誤');
}else{
console.log('非同步讀取:' +data.toString());//因為data返回二進位制資料,需要使用toString()方法轉換 或者 可選引數填入文字編碼 utf-8
}
});
fs.readFile('aaa.txt','utf-8',function(err,data){
if(err){
console.log('讀取錯誤');
}else{
console.log('非同步讀取:'+data);
}
});
//同步讀取
var data=fs.readFileSync('aaa.txt');
console.log('同步讀取:'+data.toString());
var data=fs.readFileSync('aaa.txt','utf-8');
console.log('同步讀取:'+data);
結果展示如下:
2. 寫入檔案 => writeFile(非同步寫入)和writeFileSync(同步寫入)
writeFile()直接開啟檔案預設是 w 模式,所以如果檔案存在,該方法寫入的內容會覆蓋舊的檔案內容,檔案不存在即建立新檔案
fs.writeFile(file_name,data[, options],function(err){
//非同步寫入帶三個必選引數和一個可選引數
//三個必選引數:file_name檔名,data寫入的檔案資訊,function一個回撥函式,回撥函式帶的引數是寫入錯誤資訊
//一個可選引數:options該引數是一個物件,包含 {encoding, mode, flag}。預設編碼為 utf8, 模式為 0666 , flag 為 'w'
})
fs.writeFile(file_name,data[, options])//同步寫入帶二個必選引數和一個可選引數,引數含義如上少一個回撥函式
var fs=require('fs');
//非同步寫入
fs.writeFile('aaa.txt','寫入檔案資訊',function(err){
console.log(err);
})
//同步寫入
fs.writeFileSync('aaa.txt','寫入檔案資訊');
結果展示:
3.其他
。。。。。。
4.對模組的小實踐
在這裡將fs
模組結合前面接觸的http
模組做一個小整合,寫一個簡單的從伺服器建立到響應前臺查詢檔案並且做對應返回的小demo:
var http=require('http');
var fs=require('fs');
var querystring=require('querystring');
var urlLib=require('url');
http.createServer(function(req,res){
//GET請求解析資料
var obj=urlLib.parse(req.url,true);
var url=obj.pathname;
var GET=obj.query;
//POST請求解析資料
var str='';
res.on('data',function(data){
str+=data;
})
res.on('end',function(){
var POST=querystring(str);
})
//檔案請求
var file_name='./www'+url;
fs.readFile(file_name,function(err,data){
if(err){
res.write('404');//找不到檔案返回404
}else{
res.write(data);//找到檔案返回檔案資訊
}
res.end();
})
}).listen(8080)
以上是我現在使用過的fs
模組方法,後續使用到其他的會補充更新。