// fs 操作文件的模块,内置模块
const fs = require("fs")
//基本操作在node服务器中 增删改查
// 1.文件操作 2.目录操作
// writeFile():写入文件
// 参数1:文件名称,包括文件格式
// 参数2:文件中,需要写入的内容
//
// 参数3:配置对象{}:flag属性:
// a 追加写入 ,新写的内容添加在已有内容后面
// w 写入(默认值) 当写入的文件存在时,会覆盖原有的文件
// 生成的文件位置在隔壁
// fs.writeFile("1.txt","我是需要写入的文件222",function(err){
// if(err){
// return console.log(err)
// }
// console.log("写入成功")
// })
// fs.writeFile("1.txt","我是追加写入的内容",{flag:"a"},function(err){
// if(err){
// return console.log(err)
// }
// console.log("写入成功")
// })
// 文件读取
// 回调函数中 参数1 错误信息,参数2:读取到的信息
// fs.readFile("1.txt","utf-8",(err,data)=>{
// if(err){
// return console.log(err)
// }
// console.log(data)
// })
// fs.readFile("1.txt","utf-8",(err,data)=>{
// if(err){
// return console.log(err)
// }
// console.log(data.toString()) // 读取的时候如果不是汉字,有两种解决办法一种 utf-8 另外一种toString()
// })
// 所有的文件,都是有同步 异步
// 默认的话是同步,
//
// 例如 readFileSync(); 同步
// readFile(); 异步
// let data = fs.readFileSync("11.txt").toString(); //异步
// console.log(data)
// 改 :重命名
// 参数1:
// 参数2
// fs.rename("1.txt","11.txt",(err)=>{
// if(err){
// return console.log(err)
// }
// console.log("修改成功")
// })
// 删除
// fs.unlink("11.txt",(err)=>{
// if(err){
// return console.log(err)
// }
// console.log("修改成功")
// })
// 复制 先读取,在写入
// fs.copyFile("1.txt","22.txt",(err)=>{
// if(err){
// return console.log(err);
// }
// console.log("赋值成功")
// })
// 封装复制文件的方法
// function mycopyfile(src,dste){ //
// // fs.readFileSync(src) 先读取 传入一个参数谁要用谁给传路径
// fs.writeFileSync(dste,fs.readFileSync(src)) //在写入 c参数1文件名 参数2 写入的内容
// }
// mycopyfile("index.html","text.html")
// 目录操作 (文件夹操作)
// 操作目录时,不需要添加点后缀
// 创建目录
// fs.mkdir("ding",err=>{
// if(err){
// return console.log(err)
// }console.log("创建成功")
// })
// 修改目录
// fs.rename("ding","dingding",err=>{
// if(err){
// return console.log(err)
// }console.log("创建成功")
// })
// 读取目录
// fs.readdir("老师发的",(err,data)=>{
// if(err){
// return console.log(err)
// }console.log("读取成功")
// })
// 删除空目录(会先去看文件夹中有没有内容,有不会删)
// fs.rmdir("dingding",err=>{
// if(err){
// return console.log(err)
// }
// console.log("删除成功")
// });
// 判断文件或目录是否存在
// fs.exists("home",exists =>{
// console.log(exists) //是否找到指定内容
// })
// 获取文件 或者目录的详细信息
// fs.stat("index.js",(err,data)=>{
// if(err){
// return console.log(err);
// }
// console.log(data);
// // 是否是文件
// console.log(data.isFile());
// // 是否是目录
// console.log(data.isDirectory());
// })
// 删除非空目录
/*
思路1:先把目录里的文件删除,直到改目录成为一个空目录,直接删除目录
*/
function remmoverDir(path) { //path路径
//获取到目录信息
let data = fs.readdirSync(path);
console.log(data)
for(let i =0; i<data.length; i++){ // 循环判断目录中的每一个内容
// 处理子目录 的路径
let url = path + "/" + data[i];
console.log(url)
/*
第一次循环 :url = "ding/ck"
第二次循环 :url = "ding/1.txt";
第三次循环 :url = "ding/t.text"
*/
// 获取到详细信息
let stat = fs.statSync(url);
if(stat.isDirectory()){ //如果是目录,继续查找
remmoverDir(url) // 在调用一遍函数
}else{
fs.unlinkSync(url) //否则就是文件,直接删除
}
}
// 循环结束时目录为空
fs.rmdirSync(path);
}
remmoverDir("ding")