js实现操作文件夹
使用Node.js操作文件夹
Node.js内置的fs模块提供文件系统操作功能,可以创建、读取、删除文件夹。以下是常用方法:
安装Node.js 确保已安装Node.js环境,官网下载安装包进行安装。
引入fs模块
const fs = require('fs');
const path = require('path');
创建文件夹
使用fs.mkdir或fs.mkdirSync(同步版本):

// 异步创建
fs.mkdir('./newFolder', (err) => {
if (err) throw err;
console.log('文件夹创建成功');
});
// 同步创建
try {
fs.mkdirSync('./syncFolder');
console.log('同步创建成功');
} catch (err) {
console.error(err);
}
递归创建多级目录
使用recursive: true选项:
fs.mkdir('./parent/child/grandchild', { recursive: true }, (err) => {
if (err) throw err;
});
读取文件夹内容
通过fs.readdir获取文件列表:

fs.readdir('./targetFolder', (err, files) => {
if (err) throw err;
files.forEach(file => {
console.log(file);
});
});
删除文件夹
使用fs.rmdir(空目录)或fs.rm(Node.js v14.4+支持递归删除):
// 删除空目录
fs.rmdir('./emptyFolder', (err) => {
if (err) throw err;
});
// 递归删除(包括非空目录)
fs.rm('./nonEmptyFolder', { recursive: true }, (err) => {
if (err) throw err;
});
检查文件夹是否存在
fs.access('./checkFolder', fs.constants.F_OK, (err) => {
console.log(err ? '不存在' : '存在');
});
路径拼接与解析
使用path模块处理路径:
const fullPath = path.join(__dirname, 'subfolder', 'file.txt');
const dirName = path.dirname(fullPath); // 获取目录名
遍历文件夹(递归示例)
function traverseDir(dir) {
fs.readdirSync(dir).forEach(file => {
let fullPath = path.join(dir, file);
if (fs.statSync(fullPath).isDirectory()) {
traverseDir(fullPath); // 递归子目录
} else {
console.log(fullPath);
}
});
}
traverseDir('./startFolder');
注意事项
- 异步方法推荐配合
async/await使用 - 操作前应检查权限和路径有效性
- Windows和Unix路径差异需注意
- 批量操作建议使用
Promise.all处理
完整示例(创建并写入文件)
const folderPath = './data/logs';
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath, { recursive: true });
}
fs.writeFileSync(path.join(folderPath, 'app.log'), 'Log content');
对于更复杂的文件操作,可考虑使用第三方库如:
fs-extra(增强版fs)glob(模式匹配文件搜索)chokidar(文件监视)






