1.node关于文件、文件夹的操作
有了node以后js可以运行在服务器上
//文件处理
//当前文件地址
console.log(__filename)
//当前目录的地址
console.log(__dirname)
//path模块需要专门引入 require()引入模块
const path=require("path")
//basename获取目录的最后一部分
console.log(path.basename(__filename))
console.log(path.basename(__dirname))
//dirname查找目录
console.log(path.dirname(__filename))
console.log(path.dirname(__dirname))
//path.join()拼接路径
var txt=path.join(__dirname,"my.txt");
console.log(txt)
//fs模块 文件相关
const fs=require("fs")
//创建文件夹 fs.mkdir(文件地址,(err)=>{回调函数})
fs.mkdir(path.join(__dirname,"my"),(err)=>{
console.log("成功了")
})
//删除文件
fs.rmdir(path.join(__dirname,"my"),(err)=>{
console.log("略略略,成功")
})
//读文件夹目录 fs.readdir(文件地址,(err)=>{回调函数})
fs.readdir(__dirname,(err,files)=>{
//files代表成功以后的读取目录
console.log(files)
})
//写文件 fs.writeFile(文件地址,书写数据,回调函数)
//如果文件不存在,会直接创建。如果存在,直接修改
fs.writeFile(path.join(__dirname,"index.html"),"hello",(err)=>{
console.log("写入成功")
})
//读文件操作 fs.readFile(文件地址,(err,files)=>{成功以后的回调})
fs.readFile(path.join(__dirname,"index.html"),(err,files)=>{
//在node中,内容以buffer的形式存在
//buffer.toString()把buffer形式转化为字符串
console.log(files.toString());
})
//删除文件操作 fs.unlink(文件地址,(err)=>{成功以后的回调})
fs.unlink(path.join(__dirname,"index.html"),(err)=>{
console.log("成功");
})
//检查文件状态,一般用来判断是目录还是文件夹
fs.stat(__filename,(err,stats)=>{
//stats文件状态
console.log(stats)
//isDirectory()判断是否是目录
console.log(stats.isDirectory())
//isFile()判断是否是文件
console.log(stats.isFile())
})
//判断当前目录下的所有文件状态
//第一步:读取目录下的所有文件
fs.readdir(__dirname,(err,files)=>{
//遍历数组
files.forEach((item,index)=>{
//检测状态
fs.stat(path.join(__dirname,item),(err,msg)=>{
if(msg.isDirectory()){
console.log(item+"是一个目录")
}else{
console.log(item+"是一个文件")
}
})
})
})
2.封装一个可以创建项目文件夹的函数
//引入模块,通常用常量表示
const fs=require("fs");
const path=require("path");
function mydemo(data){
return{
proName:data,
pro:[
{
name:"css",
type:"dir"
},
{
name:"images",
type:"dir"
},
{
name:"js",
type:"dir"
},
{
name:"index.html",
type:"file"
},
]
}
}
//封装一个函数,实现调用函数,可以创建项目文件夹
function createDemo(vip){
var str=`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
`
//调用函数,得到数据
var demo=mydemo(vip)
fs.mkdir(path.join(__dirname,vip),(err)=>{
//进入此处说明项目文件夹创建成功
//创建项目文件夹下各个文件
//遍历查看文件状态
demo.pro.forEach((item,index)=>{
if(item.type=="dir"){
// 父级目录
fs.mkdir(path.join(__dirname,vip,item.name),(err)=>{
//如果报错,打印错误
if(err) throw err;
})
}else{
fs.writeFile(path.join(__dirname,vip,item.name),str,(err)=>{
if(err) throw err;
})
}
})
})
}
createDemo("淘宝")