欢迎访问上海市某某有限公司
上海市某某有限公司专注网站制作10年!为企业打造专业的互联网营销解决方案
全国咨询热线: 18123456789
联系我们

上海市某某有限公司

地址:某某市某某区某某公路666弄66号

手机:18123456789

电话:021-6666666

邮箱:313801120@qq.com

当前位置:首页 > 新闻资讯 > 编程语言 > nodejs >

nodejs删除非空文件夹(通过递归对文件和文件夹操作)

时间:2022/7/14 16:26:57 作者: 点击:104次

第一种方法:

 
 const { readdirSync, statSync, unlinkSync, rmdirSync } = require("fs"); 
  
  
  
 //封装一个函数,用于删除非空目录 
  
 const delDir = dir => { 
  
     console.log(dir); 
  
     try { 
  
         const fileList = readdirSync(dir); 
  
         // console.log(fileList,Array.isArray(fileList)); 
  
         fileList.forEach(val => { 
  
             // console.log(val); 
  
             let filePath = dir + '/' + val; 
  
             const stat = statSync(filePath); 
  
             // console.log(stat); 
  
             // if(stat.isDirectory()){ 
  
             // delDir(filePath); 
  
             // }else{ 
  
             // unlinkSync(filePath); 
  
             // } 
  
             stat.isDirectory() ? delDir(filePath) : unlinkSync(filePath); 
  
  
  
         }) 
  
         rmdirSync(dir); 
  
     } catch (error) { 
  
         console.log(error) 
  
     } finally { 
  
         console.log("不管上面try...cath中是否捕获异常,这里的代码最终都会执行。。。") 
  
     } 
  
 } 
  
 delDir("aaa") 
  
 

第二种方法:
 
 let fs = require("fs"); 
  
   
  
 function deleFile(path) { 
  
     if (fs.statSync(path).isDirectory()) { 
  
         let files = fs.readdirSync(path) 
  
             //files得到一个数组 ['01.jpg','02.png','tabbar','upload'] 
  
         files.forEach((file, index) => { 
  
             let currentPath = path + "/" + file 
  
                 //currentPath-->./images/01.jpg   ./images/02.png  ./images/tabbar   ./images/upload  
  
             if (fs.statSync(currentPath).isDirectory()) { 
  
                 //如果条件为真 说明 currentPath是一个目录 
  
                 deleFile(currentPath, path) 
  
             } else { 
  
                 //currentPath说明是一个文件 
  
                 fs.unlinkSync(currentPath) 
  
             } 
  
         }) 
  
         fs.rmdirSync(path) 
  
     } else { 
  
         fs.unlinkSync(path) 
  
     } 
  
 } 
  
   
  
 deleFile("./aaa") 
  
 

帮助文档:http://nodejs.cn/api/fs.html