fs模块写入文件的方式
导入内置模块
const fs=require("fs")
一、异步写入方式
fs.writeFile("写入文件的路径",str,"utf-8",(err)=>{
console.log();
})
二、同步写入方式
fs.writeFileSync("写入文件的路径",str,"utf-8");
三、流的写入方式
var fn=fs.createWriteStream("写入文件的路径");
fn.write(str,"utf-8");
fn.end();
fn.on("finish",()=>{ });
fn.pause(); 暂停
fn.resume(); 继续
err:错误优先
utf-8:有这个参数以字符串输出,没有就以八分数组输出
str:要写入的内容
fs模块读取文件的方式
导入内置模块
const fs=require("fs")
一、异步读取方式
fs.readFile("路径","utf-8",(err,data)=>{
console.log(data);
})
二、同步读取方式
fs.readFileSync("路径","utf-8")
console.log(data);
三、流的读取方式
var fn=fs.createReadStream("路径");
var str="";
fn.on("data",(thunk)=>{ str+=thunk });
fn.on("end",()=>{
console.log(str);
});
fn.pause(); 暂停
fn.resume(); 继续
流的方式读取大文件进度
var rs= fs.createReadStream("路径");
文件的大小
var filesize=0;
fs.stat("路径",(err,info)=>{
filesize=info.size;
})
var len=0;
rs.on("data",(thunk)=>{
len+=thunk.length;
console.log((len/filesize*100).toFixed(2)+'%');
})
rs.on("end",()=>{
console.log("read complete")
})
err:错误优先
utf-8:有这个参数以字符串输出,没有就以八分数组输出
data:要读取的文件
fs模块读取文件方式的顺序
同步 ——> 流 —> 异步
fs模块copy方式
一、小文件的copy方式
var copyFile=(src,dest)=>{
new Promise((callbaack)=>{
fs.readFile(src,"utf-8",(err,data)=>{
callback(data);
})
}).then((data)=>{
fs.writeFile(dest,data,"utf-8",()=>{
console.log();
})
})
}
src:表示原文件
dest:表示被copy的目标文件
data:表示要读取的文件
二、大文件的copy方式
var rs=fs.createReadStream("原文件路径");
var ws=fs.createWriteStream("目标文件路径");
var size=0; 定义文件的大小
var len=0; 定义加载的进度
fs.stat("原文件路径",(err,info)=>{
size=info.size;
rs.on("data",(thunk)=>{
len+=thunk.length;
var flag=ws.write(thunk,(err)=>{
if(!err){
process.stdout.clearLine(); 清屏
process.stdout.cursorTo(0); 让光标在第一行
process.stdout.write((len/size*100).toFixed(2)+"%");
}
})
if(!flag){
rs.pause(); 如果没有写入完成,就暂停读取
}
})
})
ws.on("drain",()=>{ drain表示写入完成
rs.resume(); 如果写入完成,就继续读取
})
rs.on("end",()=>{
process.stdout.clearLine();
process.stdout.cursorTo(0);
})
http模块
导入模块
const http=require("http");
操作
var ser=http.createServer((req,res)=>{
res.writeHead(200,"Content-type",'text/html;charset=uft-8'); 防止中文乱码
res.write(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>`)
res.write("<h1>hello world!!!!!</h1>");
res.end(`</body>
</html>`);
})
ser.listen(端口号,()=>{
console.log("listen"+ser.address().port+"...");
})
红色部分是为了看起来像html页面
req:表示请求对象
res:表示响应对象
200:表示请求成功的状态吗