目录
fs模块
//写入文件
//异步写入文件
const fs=require("fs");
fs.writeFile("1.txt","温故而知新",err=>{
if(err){
console.log("写入失败");
return;
}
console.log("写入成功");
});
//同步写入
fs.writeFileSync("1.txt","可以为师矣")
//文件追加
//文件追加写入
const fs=require("fs");
fs.appendFile("1.txt","温故而知新",err=>{
if(err){
console.log("写入失败");
return;
}
console.log("写入成功");
})
//同步追加
fs.appendFileSync("1.txt","可以为师矣")
//writeFile追加
fs.writeFile("1.txt","温故而知新",{flag:"a"},err=>{
if(err){
console.log("写入失败");
return;
}
console.log("写入成功");
})
//文件流式写入
//第一步导入fs
const fs=require("fs");
//第二步创建写入流对象
const ws=fs.createWriteStream("1.txt");
//第三步write
ws.write("三人行\r\n");//\r\n代表换行
ws.write("必有我师焉");
//第四步关闭(可有可无)
ws.close();
//读取文件
//异步读取
const fs=require("fs")
fs.readFile("1.txt","温故而知新",(err,data)=>{
if(err){
console.log("写入失败");
return;
}
console.log(data.tostring());//把Buffer转换为字符串
})
//同步读取
let data=fs.readFileSync("1.txt","可以为师矣")
console.log(data.tostring())
//文件流式读取
//第一步导入fs
const fs=require("fs");
//第二步//创建写入流对象
const rs=fs.createReadStream("1.txt");
//第三步绑定data事件 chunk块
rs.on("data",chunk=>{
console.log(chunk.length);
})
//第四步关闭(可有可无)
rs.on("end",()=>{
console.log("读取完成");
})
//文件复制
//方式一readFile
const fd=require("fs");
let data=fs.readFileSync("1.txt");
fs.writeFileSync("12.txt",data);
//方式二流式操作
const fd=require("fs");
let rs=fs.createReadStream("1.txt");
const ws=fs.createWriteStream("12.txt");
//绑定data事件
rs.on("data",chunk=>{
ws.write(chunk)})
//文件的重命名和移动
fs.rename("1.txt","2.txt",err=>{
if(err){
console.log("操作失败");
return;
}
console.log("操作成功");
})
//文件的删除
const fs=require("fs");
//调用unlink方法
fs.unlink("1.txt",err=>{
if(err){
console.log("删除失败");
return;
}
console.log("删除成功");
});
//调用rm方法
fs.rm("1.txt",err=>{
if(err){
console.log("删除失败");
return;
}
console.log("删除成功");
});
//文件夹操作
const fs=require("fs");
//创建文件夹mkdir
fs.mkdir("1.txt",err=>{
if(err){
console.log("创建失败");
return;
}
console.log("创建成功");
});
//递归创建
fs.mkdir("./a/b/c",{recursive:true},err=>{
if(err){
console.log("创建失败");
return;
}
console.log("创建成功");
})
//读取文件夹
const fs=require("fs")
fs.readdir("./",(err,data)=>{
if(err){
console.log("读取失败");
return;
}
console.log(data);
});
//删除文件夹
fs.rmdir(./html,err=>{
if(err){
console.log("删除失败");
return;
}
console.log(删除成功);
});
//删除递归文件夹(不建议使用)
fs.rmdir(./a,{recursive:true},err=>{
if(err){
console.log("删除失败");
return;
}
console.log(删除成功);
});
//建议使用
fs.rm(./a,{recursive:true},err=>{
if(err){
console.log("删除失败");
return;
}
console.log(删除成功);
});
//查看资源状态
//stat 方法 status缩写状态
const fs=require("fs");
fs.stat('./1.txt',(err,data)=>{
if(err){
console.log('操作失败');
return;
}
//判断是否是文件
console.log(data.isFile());
//判断是否是文件夹
console.log(data.isDirectory());
});
注意://__dirname,不会根据工作目录的变化而变化
const fs=require("fs")
fs.writeFileSync(__dirname + '/index.txt','love')
path模块
path.resolve//拼接规范的绝对路径(常用)
path.resolve(__dirname,"./index.html")
path.resolve(__dirname,"index.html")
path.resolve(__dirname,"./index.html")//这种是错误的,不要写
path.sep//获取操作系统的路径分隔符
path.parse//解析路径并返回对象
path.basename//获取路径的基础名称
path.dirname//获取路径的目录名
path.extname//获取路径的扩展名
http模块
//导入http模块
const http=require('http')
//创建服务对象
const server=http.createServer((request,response)=>{
request.method//获取请求的方法
request.url//获取请求的url
request.httpVersion//获取http协议的版本号
request.headers.host//获取http的请求头
//获取请求体
//1.声明一个变量
let body=''
//2.绑定data事件
request.on('data',chunk=>{
body+=chunk})
//3.绑定end事件
request.on('end',()=>{
console.log(body)
})
response.end('http')//设置响应体
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动、、、')
})
//获取请求路径和查询字符串
const http=require('http')
const server=http.createServer((request,response)=>{
let url=new URL(request.url,'http://127.0.0.1')
//防止乱码
response.setHeader('contentˉtype','text/html;charset=utf-8')
//输出路径
console.log(url.pathname)
//输出keyword查询字符串
console.log(url.searchParams.get('keyword'))
response.end('url new')
})