6_Node 文件系统

[toc] #NodeJS 文件系统[fs 模块] ###1.NodeJS 文件系统 NodeJS 文件系统被封装在fs模块中,它提供了文件的读取,写入,更名,删除,遍历目录,链接等文件系统的操作。 和其他模块不同的是,fs模块提供了异步和同步两个版本;例如读取文件内容的函数有异步fs.readFile()和同步函数fs.readFileSync()。 ###2.文件读取 ####2.1异步读取文件方法 **fs.readFile(filename,[encoding],[callback(err,data)])** + filename(必选),读取的文件名称(文件路径) + encoding(可选),表示文件的字符编码 + callback 回调函数,用于接收文件的内容 ```js // 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(); } }) } } ``` ```js // 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(必选),要写入文件的数据 + encoding(可选),表示文件的字符编码 + callback 回调函数,接收错误信息 ```js // 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(); } }) }) } ``` ```js // 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(必选),要写入文件的数据 + encoding(可选),表示文件的字符编码 ```js // 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'); }) ``` ```js // 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 回调函数,用于接收错误信息 ```js // 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(必选),读取的文件名称(文件路径) ```js // 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同上 } ```

你可能感兴趣的:(6_Node 文件系统)