6_Node 文件系統(tǒng)

[toc]

NodeJS 文件系統(tǒng)[fs 模塊]

1.NodeJS 文件系統(tǒng)

NodeJS 文件系統(tǒng)被封裝在fs模塊中,它提供了文件的讀取,寫入,更名,刪除,遍歷目錄,鏈接等文件系統(tǒng)的操作。
和其他模塊不同的是,fs模塊提供了異步和同步兩個(gè)版本;例如讀取文件內(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ù),接收錯(cuò)誤信息
    // 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', "你個(gè)哈皮", '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ù),用于接收錯(cuò)誤信息
    // 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同上
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容