Node清空文件夹,文件,自动创建文件夹

2021-12-17  本文已影响0人  i_木木木木木
const fs = require('fs');
const path = require("path")

/**
 * 删除文件夹下所有文件及将文件夹下所有文件清空-同步方法
 * @param {*} path
 */
function emptyDir(path) {
    const files = fs.readdirSync(path);
    files.forEach(file => {
        const filePath = `${path}/${file}`;
        const stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            emptyDir(filePath);
        } else {
            fs.unlinkSync(filePath);
            console.log(`删除${file}文件成功`);
        }
    });
}

/**
 * 删除指定路径下的所有空文件夹-同步方法
 * @param {*} path
 */
function rmEmptyDir(path, level=0) {
    const files = fs.readdirSync(path);
    if (files.length > 0) {
        let tempFile = 0;
        files.forEach(file => {
            tempFile++;
            rmEmptyDir(`${path}/${file}`, 1);
        });
        if (tempFile === files.length && level !== 0) {
            fs.rmdirSync(path);
        }
    }
    else {
        level !==0 && fs.rmdirSync(path);
    }
}

/**
 * 清空指定路径下的所有文件及文件夹-同步方法
 * @param {*} path
 */
function clearDir(path) {
    emptyDir(path);
    rmEmptyDir(path);
}

/**
 * 递归创建目录 同步方法
 * @param {*} dirname
 */
const mkdirsSync = (dirname) => {
    if (fs.existsSync(dirname)) {
        return true;
    } else {
        if (mkdirsSync(path.dirname(dirname))) {
            fs.mkdirSync(dirname);
            return true;
        }
    }
}

module.exports = {
    rmEmptyDir,
    emptyDir,
    clearDir,
    mkdirsSync
}

上一篇下一篇

猜你喜欢

热点阅读