| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- const fs = require('fs').promises;
- const path = require('path');
- /**
- * 读取指定文件夹内的所有子文件夹并返回路径
- * @param {string} folderPath - 要读取的文件夹路径
- * @returns {Promise<string[]>} 子文件夹路径数组
- */
- async function getSubdirectories(folderPath) {
- try {
- // 检查文件夹是否存在
- await fs.access(folderPath);
- // 读取文件夹内容
- const items = await fs.readdir(folderPath, { withFileTypes: true });
- // 过滤出子文件夹
- const directories = items
- .filter(item => item.isDirectory())
- .map(item => path.join(folderPath, item.name));
- return directories;
- } catch (error) {
- return [];
- }
- }
- /**
- * 获取指定文件夹内的所有文件
- * @param {string} folderPath - 要读取的文件夹路径
- * @returns {Promise<string[]>} 文件路径数组
- */
- async function getFilesInDirectory(folderPath) {
- try {
- // 检查文件夹是否存在
- await fs.access(folderPath);
- // 读取文件夹内容
- const items = await fs.readdir(folderPath, { withFileTypes: true });
- // 过滤出文件
- const files = items
- .filter(item => item.isFile())
- .map(item => path.join(folderPath, item.name));
- return files;
- } catch (error) {
- if (error.code === 'ENOENT') {
- console.error(`错误: 文件夹不存在 - ${folderPath}`);
- return []; // 返回空数组而不是抛出错误
- }
- throw error;
- }
- }
- // 使用示例
- async function main() {
- const targetFolder = './example'; // 替换为您的文件夹路径
- try {
- // 获取子文件夹
- console.log('正在读取子文件夹...');
- const subdirectories = await getSubdirectories(targetFolder);
- console.log('找到的子文件夹:');
- subdirectories.forEach(dir => console.log(`- ${dir}`));
- // 获取每个子文件夹中的文件
- for (const dir of subdirectories) {
- console.log(`\n读取文件夹: ${dir}`);
- const files = await getFilesInDirectory(dir);
- if (files.length === 0) {
- console.log(' 此文件夹中没有文件或文件夹不存在');
- } else {
- console.log(' 找到的文件:');
- files.forEach(file => console.log(` - ${file}`));
- }
- }
- // 测试不存在的文件夹
- console.log('\n测试不存在的文件夹...');
- const nonExistentFiles = await getFilesInDirectory('./non-existent-folder');
- console.log(`不存在的文件夹返回了 ${nonExistentFiles.length} 个文件`);
- } catch (error) {
- console.error('发生错误:', error.message);
- }
- }
- // 如果直接运行此文件,则执行示例
- if (require.main === module) {
- main();
- }
- module.exports = { getSubdirectories, getFilesInDirectory };
|