欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例

 更新時(shí)間:2023年04月12日 09:09:05   作者:miemiem_  
這篇文章主要介紹了nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法,通過(guò)兩個(gè)具體案例形式分析了node.js同步刪除文件/文件夾,以及異步刪除文件/文件夾的相關(guān)實(shí)現(xiàn)技巧,涉及遞歸遍歷與文件判斷、回調(diào)等相關(guān)操作,需要的朋友可以參考下

同步函數(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ù)……)

相關(guān)文章

最新評(píng)論