NodeJS 文件系統(tǒng)[fs 模塊]
1.NodeJS 文件系統(tǒng)
NodeJS 文件系統(tǒng)被封裝在fs模塊中斗塘,它提供了文件的讀取,寫入止剖,更名腺阳,刪除,遍歷目錄穿香,鏈接等文件系統(tǒng)的操作亭引。
和其他模塊不同的是,fs模塊提供了異步和同步兩個版本皮获;例如讀取文件內(nèi)容的函數(shù)有異步fs.readFile()和同步函數(shù)fs.readFileSync()焙蚓。
2.文件讀取
2.1異步讀取文件方法
fs.readFile(filename,[encoding],[callback(err,data)])
- filename(必選),讀取的文件名稱(文件路徑)
- encoding(可選)洒宝,表示文件的字符編碼
- callback 回調(diào)函數(shù)购公,用于接收文件的內(nèi)容
// router.js
var fs=require('fs');//引入fs模塊
module.export={
'/a.html':function(req,res){
// 同步讀取文件
fs.readFile('./public/a.html','utf-8',function(err,data){
if(err){
console.error(err);
}else{
res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
res.write(data);
res.end();
}
})
}
}
// server.js
var http=require('http');
var router=require('./router');
function onRequest(req,res){
if(req.url!=='/favicon.ico'){
router[req.url](req,res);
}
}
var webServer=http.createServer(onRquest);
webServer.listen(3000,function(){
console.log('server is running,port is 3000');
})
2.2同步讀取文件
fs.readFileSync(filename,[encoding])
- filename(必選),讀取的文件名稱(文件路徑)
- encoding(可選)雁歌,表示文件的字符編碼
3.文件寫入
3.1異步寫入文件方法
fs.writeFile(filename,data,[encoding],[callback(err)])
- filename(必選)宏浩,讀取的文件名稱(文件路徑)
- data(必選),要寫入文件的數(shù)據(jù)
- encoding(可選)靠瞎,表示文件的字符編碼
- callback 回調(diào)函數(shù),接收錯誤信息
// router.js
var fs=require('fs');//引入fs模塊
module.exports={
'/b.html':function(req,res){
// 異步寫入文件
fs.writeFile('./public/b.txt', "mmmmmmmmmm", 'utf-8', function (err) {
if (err) {
console.error(err);
}
//寫入后異步讀取
fs.readFile('./public/b.txt', 'utf-8', function (err, data) {
if (err) {
console.error(err);
} else {
res.writeHead(200, { "content-type": "text/html;charset=utf-8" });
res.write(data);
res.end();
}
})
})
}
// server.js
var http=require('http');
var router=require('./router');
function onRequest(req,res){
if(req.url!=='/favicon.ico'){
router[req.url](req,res);
}
}
var webServer=http.createServer(onRequest);
webServer.listen(3000,function(){
console.log('server is running,port is 3000');
})
3.2同步寫入文件方法
fs.writeFileSync(filename,data,[encoding])
- filename(必選)比庄,讀取的文件名稱(文件路徑)
- data(必選),要寫入文件的數(shù)據(jù)
- encoding(可選)乏盐,表示文件的字符編碼
// server.js
var http = require('http');
var router = require('./router');
function onRequest(req, res) {
if (req.url !== '/favicon.ico') {
router[req.url](req, res);
}
}
var webServer = http.createServer(onRequest);
webServer.listen(3000, function () {
console.log('server is running,port is 3000');
})
// router.js
var fs = require('fs');//引入fs模塊
module.exports = {
'/b': function (req, res) {
// 同步寫入文件
fs.writeFileSync('./public/b.txt', "你個哈皮", 'utf-8')
//寫入后同步讀取
var fileData = fs.readFileSync('./public/b.txt', 'utf-8');
res.writeHead(200, { "content-type": "text/html;charset=utf-8" });
res.write(fileData);
res.end();
},
}
4.文件刪除
4.1異步刪除文件方法
fs.unlink(filename,[callback(err)])
- filename(必選)印蔗,讀取的文件名稱(文件路徑)
- callback 回調(diào)函數(shù),用于接收錯誤信息
// router.js
var fs = require('fs');//引入fs模塊
module.exports = {
'/del.html':function(req,res){
fs.unlink('./public/b.txt',function(err){
if(err){
console.error(err)
}
//返回刪除成功信息
res.writeHead(200, { "content-type": "text/html;charset=utf-8" });
res.write("文件刪除成功");
res.end();
})
}
// server.js同上
}
4.2同步刪除文件方法
fs.unlinkSync(filename])
- filename(必選)丑勤,讀取的文件名稱(文件路徑)
// router.js
var fs = require('fs');//引入fs模塊
module.exports = {
'/del_.html':function(req,res){
fs.unlinkSync('./public/a.txt');
res.writeHead(200, { "content-type": "text/html;charset=utf-8" });
res.write("文件刪除成功");
res.end();
}
// server.js同上
}