node fs文件操作及删除非空目录


// 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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason–json

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值