nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例
同步函數(shù):
//使用fs.readdir()方法讀取文件夾中的所有文件和文件夾,然后使用遞歸來(lái)刪除每個(gè)文件和文件夾。 const fs = require('fs'); const path = require('path'); ? function deleteFolderRecursive(folderPath) { ? //判斷文件夾是否存在 ? if (fs.existsSync(folderPath)) { ? ? //讀取文件夾下的文件目錄,以數(shù)組形式輸出 ? ? fs.readdirSync(folderPath).forEach((file) => { ? ? ? //拼接路徑 ? ? ? const curPath = path.join(folderPath, file); ? ? ? //判斷是不是文件夾,如果是,繼續(xù)遞歸 ? ? ? if (fs.lstatSync(curPath).isDirectory()) { ? ? ? ? deleteFolderRecursive(curPath); ? ? ? } else { ? ? ? ? //刪除文件或文件夾 ? ? ? ? fs.unlinkSync(curPath); ? ? ? } ? ? }); ? ? //僅可用于刪除空目錄 ? ? fs.rmdirSync(folderPath); ? } } ? // 刪除文件夾下的所有文件和文件夾 deleteFolderRecursive('/path/to/folder');
異步函數(shù):
const fs = require('fs'); const path = require('path'); ? function deleteFolderRecursive(folderPath) { ? if (fs.existsSync(folderPath)) { ? ? fs.readdir(folderPath, (err, files) => { ? ? ? if (err) throw err; ? ? ? ? for (const file of files) { ? ? ? ? const curPath = path.join(folderPath, file); ? ? ? ? fs.stat(curPath, (err, stats) => { ? ? ? ? ? if (err) throw err; ? ? ? ? ? ? if (stats.isDirectory()) { ? ? ? ? ? ? deleteFolderRecursive(curPath); ? ? ? ? ? } else { ? ? ? ? ? ? fs.unlink(curPath, (err) => { ? ? ? ? ? ? ? if (err) throw err; ? ? ? ? ? ? }); ? ? ? ? ? } ? ? ? ? }); ? ? ? } ? ? ? ? fs.rmdir(folderPath, (err) => { ? ? ? ? if (err) throw err; ? ? ? }); ? ? }); ? } } ? // 刪除文件夾下的所有文件和文件夾 deleteFolderRecursive('/path/to/folder');
PS:看到這段代碼,筆者就想起初學(xué)node.js的場(chǎng)景,補(bǔ)充幾點(diǎn)曾經(jīng)踩過(guò)的坑~
1.common.js
模式下使用require
引入模塊,對(duì)于path模塊來(lái)說(shuō),此時(shí)可以直接使用__dirname
常亮,而ES6語(yǔ)法情況下,使用module
模式,import
引入path
模塊時(shí),不能直接使用__dirname
常亮,需要手動(dòng)定義:
const __dirname = path.resolve();
2.路徑問(wèn)題:因?yàn)椴渴瓠h(huán)境有可能是Windows,也可能是Linux,因此,涉及到路徑的引入最好是使用path.join()
方法結(jié)合__dirname
常亮定義出完整的路徑!
3.注意異步操作的不確定性,需要用到函數(shù)返回值的話,不要使用異步函數(shù)!(未完待續(xù)……)
- nodejs如何獲取指定路徑下所有的文件夾名或類型
- NodeJS 文件夾拷貝以及刪除功能
- 純異步nodejs文件夾(目錄)復(fù)制功能
- nodejs文件夾深層復(fù)制功能
- nodejs對(duì)項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法
- nodejs實(shí)現(xiàn)獲取本地文件夾下圖片信息功能示例
- nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法
- NodeJS 將文件夾按照存放路徑變成一個(gè)對(duì)應(yīng)的JSON的方法
- Nodejs實(shí)現(xiàn)多文件夾文件同步
- nodejs判斷文件、文件夾是否存在及刪除的方法
- Nodejs 復(fù)制文件/文件夾的方法
- nodejs實(shí)現(xiàn)遍歷文件夾并統(tǒng)計(jì)文件大小
相關(guān)文章
Node.js查詢MySQL并返回結(jié)果集給客戶端的全過(guò)程
nodejs最大的優(yōu)勢(shì)也是大家用著最為難以理解的一點(diǎn),就是它的異步功能,它幾乎所有的io操作都是異步的,這也就導(dǎo)致很多人不理解也用不習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于Node.js查詢MySQL并返回結(jié)果集給客戶端的相關(guān)資料,需要的朋友可以參考下2022-12-12為什么Node.js會(huì)這么火呢?Node.js流行的原因
是什么原因讓Node.js突然間如此流行呢?聽(tīng)起來(lái)像是有了一種新的Web開(kāi)發(fā)技術(shù),是這樣嗎?我們來(lái)匯總一下。2014-12-12nodejs之get/post請(qǐng)求的幾種方式小結(jié)
下面小編就為大家?guī)?lái)一篇nodejs之get/post請(qǐng)求的幾種方式小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07nodejs中art-template模板語(yǔ)法的引入及沖突解決方案
本篇文章主要介紹了nodejs中art-template模板語(yǔ)法的引入及沖突解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11用nodejs的實(shí)現(xiàn)原理和搭建服務(wù)器(動(dòng)態(tài))
下面小編就為大家?guī)?lái)一篇用nodejs的實(shí)現(xiàn)原理和搭建服務(wù)器(動(dòng)態(tài))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08Nodejs實(shí)現(xiàn)獲取實(shí)時(shí)數(shù)據(jù)的三種主流方式詳解
這篇文章主要為大家詳細(xì)介紹了Nodejs前端獲取實(shí)時(shí)數(shù)據(jù)的三種主流方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02Node.js中的events事件模塊知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Node.js中的events事件模塊知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。2021-12-12