// 引入依赖
const fs = require('fs');
// 删除指定路径下的所有文件
/**
* 删除指定路径下的所有文件,但排除某些特定文件或文件夹。
* @param {string} path - 需要清空文件的路径。
*/
function emptyDir(path) {
const files = fs.readdirSync(path);
// 定义不需要删除的文件列表
let noDelete = ['.git', 'README.md', 'pc.html'];
files.forEach(file => {
// 判断文件是否在不删除的列表中
if (!noDelete.includes(file)) {
const filePath = `${path}/${file}`;
const stats = fs.statSync(filePath);
// 判断是否为目录
if (stats.isDirectory()) {
emptyDir(filePath);
} else {
fs.unlink(filePath, () => {});
console.log(`删除${file}文件成功`);
}
}
});
}
// 删除指定路径下的所有空文件夹
/**
* 删除指定路径下的所有空文件夹。
* @param {string} path - 需要清空文件夹的路径。
* @param {number} level - 文件夹的深度,默认为0。
*/
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 {string} src - 原路径。
* @param {string} dst - 目标路径。
* @param {Function} callback - 回调函数。
*/
function exists(src, dst, callback) {
if (fs.existsSync(dst)) {
callback(src, dst);
} else {
fs.mkdir(dst, function () {
callback(src, dst);
});
}
}
// 判断数组中的元素是否包含字符串
/**
* 判断数组中的元素是否包含指定的字符串。
* @param {Array} arr - 被检查的数组。
* @param {string} obj - 需要查找的字符串。
* @returns {boolean} - 是否包含指定的字符串。
*/
function contains(arr, obj) {
let flag = false;
arr.map((val) => {
if (obj.includes(val)) {
flag = true;
}
});
return flag;
}
// 模块导出
module.exports = {
emptyDir,
rmEmptyDir,
exists,
contains
}
主要提供了文件和文件夹操作的一些基本功能,包括清空指定目录下的文件、删除空文件夹、检查路径是否存在以及检查数组中是否包含特定字符串等功能。