fs文件系统模块(详细参考https://www.w3cschool.cn/nodejs/nodejs-fs.html)
fs模块是nodejs的核心模块,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX文件系统操作。
fs与其他模块不同的是 fs模块都提供了异步和同步的两个版本,例如 readFile 和 readFilesync 的读取文件就是有两个版本
异步和同步的区别
同步:执行一个方法,只有方法给出结果后,才算结束
异步:执行一个方法,只是交代要做的事情,然后去做其他事情,而交代给回调来处理
异步读取
参数:1,要读取的文件路径
2,读取时用到的编码格式
3,回调函数,要来输出读取成功或者是失败
var fs=require("fs");
fs.readFile("./读取文件的名字.txt","编码格式",回调函数 functio(err,data){
如果文件读取失败就打印失败,读取成功就打印成功
if(err){
console.log(“读取失败”,err.message)
}else{
console.log(data)
}
})
同步读取
参数:1,文本文件
2,字符编码
var data=""
try{
data = fs.redaFileSync("./文本文件名字.txt","utf-8");
console.log("data",data);
}catch(error){
console.log("error:",error);
}
所有语言程序中 都有try...catch异常捕获机制
try:试一试 试着做 catch:抓住 捕获
异步写入
var fs = require("fs");
writeFile:write(写)file(文件)
参数:1,给定一个要写入的文件
2,要写如的数据
3,字符编码
4,回调函数:返回文件写入失败或成功
fs.writeFile('./创建的文件名称.txt','要写入的数据','字符编码',回调函数function(err){
if(err){
console.log("写入失败",err)
}else{
console.log("写入成功”)
}
})
同步写入(个人认为同步写入和异步写入写法上只在writeFile 和 writeFileSync上有区别)
var fs = require("fs");
writeFileSync:write(写)file(文件)
参数:1,给定一个要写入的文件
2,要写如的数据
3,字符编码
4,回调函数:返回文件写入失败或成功
fs.writeFileSync('./创建的文件名称.txt','要写入的数据','字符编码',回调函数function(err){
if(err){
console.log("同步写入失败",err)
}else{
console.log("同步写入成功”)
}
})
封装读取文件
1,创建一个http服务器,和 js模块系统
var http=require("http")
var fs=require("fs")
2,创建一个服务器
http.createSever(function(req,res){
对请求和响应进行执行
3,对不同的url地址读取对应的文件
var url=req.url; 得到浏览器中的地址
var fileName=“”;
switch(url){
case "/"(注意:此处“/”前不带“.”)
读取文件方法(在此封装了一个函数)
先把他们读取文件的地址给了fileName
fileName=“./index.html”
readFileFun(fileName,res);
break;
case "/list.html"(注意:此处“/”前不带“.”)
读取文件方法(在此封装了一个函数)
先把他们读取文件的地址给了fileName
fileName=“./list.html”
readFileFun(fileName,res);
break;
case "/css"(注意:此处“/”前不带“.”)
读取文件方法(在此封装了一个函数)
先把他们读取文件的地址给了fileName
fileName=“./style.css”
readFileFun(fileName,res);
break
defaulte:
res.end("请输入正确路径")
break;
}
}).listen(4000,function(){
console.log("服务器启动成功!!")
})
4,开始写入封装函数
function readFileFun(fileName,res){
进行文件读取
fs.readFile(fileName,"utf8",function(err,data){
if(err){
var msg=fileName+"文件读取失败";
res.end(msg)
}else{
res.write(data);
res.end();
}
})
}
追加文件(异步)
追加文件:向文件中追加内容 是不清除原有数据的情况下
写入文件: 写入数据 每次把原来的数据清除
var fs=require("fs");
fs.appendFile("./追加的文件名.txt","追加的内容","编码格式",function(err){
if(!err){
console.log("写入数据成功")
}
})
追加文件(同步)
var fs=require("fs")
try(
fs.appendFileSync("./追加的文件名称.txt","追加的内容",“编码格式”)
)catch(error){
console.log(error)
}
nodejs服务器请求文件
案例步骤:
1,使用nodejs创建一个http服务器
2,引入fs文件系统模块
3,根据浏览器中urk地址的不同读取对应的文件
路径:“/”,读取index.html
"/list.html",读取list.html
"/css",读取style.css文件
4,将读取的信息输出到浏览端
//引入http模块
var http=require("http")
var fs=require("fs")
http.createSever(function(req,res){
var url=req.url;
//设置头信息读取不同的文件
res.writeHead(200,{"Content-type":"text/html/css;charset=utf8"})
if(url=="/"){
//回调的是 错误和成功的信息数据
fs.readFile("./index.html","utf-8",function(err,data){
if(err){
res.write("读取index.html失败")
res.end();
}else{
res.write(data)
res.end();
}
}
else if(url=="/list.html"){
fs.readFile("./list.html","utf8",function(err,data){
if(err){
res.write("读取list.html文件失败")
res.end()
}else{
res.write(data);
res.end();
}
})
}
else if(url=="/css"){
fs.readFile("./style.css","utf8",function(err,data){
if(err){
res.write("读取css文件失败")
res.end()
}else{
res.write(data);
res.end();
}
})
}
})
}).listen(3000,function(){
consoloe.log("服务启动成功")
})
favcion.ico文件是网站的图标