1.对文件开始操作前先引入node模块:
const fs=require('fs') //引入fs模块
2.fs.stat -----检测是文件还是目录
eg:
fs.stat("./html", (err, data) => {
if (err) {
console.log(err);
return;
}
console.log(`是文件:${data.isFile()}`);
console.log(`是目录:${data.isDirectory()}`);
});
3.fs.writeFile ----创建写入文件
fs.writeFile("./html/index.html", "hello", (err) => {//第一个参数写入的文件,第二个是内容
if (err) {
console.log(err);
return;
}
console.log("创建写入文件成功");
});
4.fs.mkdir --------创建目录
fs.mkdir("./css", (err) => {
if (err) {
console.log(err);
return;
} else {
console.log("success");
}
});
5.fs.appendFile ------------加文件
fs.appendFile("./html/index.html", "wait wait wait\n", (err) => { if (err) {
console.log(err);
return; } console.log("appendFile成功"); });
6.fs.readFile --------读取文件
fs.readFile("./html/index.html", (err, data) => {
if (err) {
console.log(err);
return;
}
console.log(data); //data是Buffer类型数据
console.log(data.toString()); //通过toString()转换成字符串
});
7.fs.readdir------- 读取目录
fs.readdir("./html", (err, data) => {
if (err) {
console.log(err);
return;
}
console.log(data); //文件信息
});
8.fs.rename -------重命名
fs.rename("./html/style.css", "./html/jjj.css", (err) => {
if (err) {
console.log(err);
return;
}
console.log("重命名成功");
});
fs.rename("./html/jjj.css", "./style.css", (err) => {
if (err) {
console.log(err);
return;
}
console.log("移动并且修改文件名成功");
});
9.fs.rmdir------- 删除目录
fs.rmdir("./delete", (err) => {
if (err) {
console.log(err);
return;
}
//如果目录下有文件,则无法删除,需要先删除文件,再删除目录
console.log("删除目录成功");
});
10.fs.unlink---- 删除文件
fs.unlink("./delete/delete.html", (err) => {
if (err) {
console.log(err);
return;
}
console.log("删除文件成功");
});
11.fs.createReadStream---------- 以文件流方式读取数据
let readStream = fs.createReadStream("./html/index.html");
let count = 0;
let str = "";
readStream.on("data", (data) => {
str += data;
count++;
});
readStream.on("end", () => {
console.log(str);
console.log(count);
});
readStream.on("error", (err) => {
console.log(err);
});
12.fs.createWriteStream -------以流的方式写入文件
let str = "";
let data = "ashdjhdaksjdhakdaskjdkasdaajsdka\n";
for (let i = 0; i < 500; i++) {
str += data;
}
var writeStream = fs.createWriteStream("./html/write.txt");
writeStream.write(str);
writeStream.end();
writeStream.on("finish", () => {
console.log("写入完成");
});
13.管道流------- 用于复制大文件
let readStream = fs.createReadStream("./html/write.txt");
let writeStream = fs.createWriteStream("./root/write.txt");
readStream.pipe(writeStream);
13.完整的node服务
eg:
//http模块
var http = require("http");
//引入http模块
var fs = require("fs");
//引入fs文件模块
var server = http.createServer();
//创建http服务
server.on("request",(req,res)=>{
//监听请求
if(req.url == "/index.html"){
//当地址为index。html时
fs.readFile('index.html',(err,data)=>{
//加载页面
res.end(data.toString())
})
}else if(req.url == "/login.html"){
//当地址为login。html时
fs.readFile('login.html',(err,data)=>{
//加载页面
res.end(data.toString())
})
}
})
server.listen(3000)//设定端口号