首页 > 编程语言 >nodejs 统计算指定后缀,格式的文件

nodejs 统计算指定后缀,格式的文件

时间:2024-06-23 22:11:21浏览次数:29  
标签:count fs const err extension nodejs 后缀 path 格式

都是gpt生成的

 

可用版本

const fs = require('fs');
const path = require('path');

function countHtmlFiles(dirPath) {
  let count = 0;
  const files = fs.readdirSync(dirPath);
  files.forEach(file => {
    const filePath = path.join(dirPath, file);
    const stat = fs.statSync(filePath);
    if (stat.isFile()) {
      if (path.extname(filePath) === '.html') {
        count++;
      }
    } else if (stat.isDirectory()) {
      // 将递归调用得到的 count 值累加到当前 count 变量
      count += countHtmlFiles(filePath); 
    }
  });
  return count;
}

// 测试
const targetDir = './myDirectory'; // 替换为您的目标目录
const htmlCount = countHtmlFiles(targetDir);
console.log(`目录 ${targetDir} 中包含 ${htmlCount} 个 HTML 文件。`);

 

不可用版本,

const fs = require('fs');
const path = require('path');

function countFilesByExtension(dirPath, extension) {
    return new Promise((resolve, reject) => {
        fs.readdir(dirPath, { withFileTypes: true }, (err, files) => {
            if (err) {
                reject(err);
            } else {
                let count = 0;
                files.forEach(file => {
                    if (!file.isDirectory()) {
                        const filePath = path.join(dirPath, file.name);
                        if (path.extname(filePath) === extension) {
                            count++;
                        }
                    }
                });
                resolve(count);
            }
        });
    });
}

// 示例:统计当前目录下所有.html文件的数量
const directory = '.';  // 当前目录,可以根据需要修改为其他目录路径
const extension = '.html';

countFilesByExtension(directory, extension)
    .then(count => {
        console.log(`在目录 '${directory}' 下,共有 ${count} 个 .${extension.slice(1)} 文件。`);
    })
    .catch(err => {
        console.error('读取目录时出错:', err);
    });

A: 上述nodejs版本,没有递归调用目录

Q: 您是对的,我之前的Node.js示例中确实没有递归处理子目录中的文件。为了修正这一点,我们可以修改Node.js的示例代码,使其能够递归地遍历目录及其所有子目录来统计指定文件类型的数量。下面是更新后的Node.js代码示例,实现了递归统计指定扩展名文件的功能:

 

仍不可用版本

const fs = require('fs');
const path = require('path');

function countFilesRecursively(dirPath, extension, callback) {
    fs.readdir(dirPath, { withFileTypes: true }, (err, files) => {
        if (err) {
            return callback(err);
        }
        
        let count = 0;
        files.forEach((file) => {
            const filePath = path.join(dirPath, file.name);
            if (file.isDirectory()) {
                // 递归处理子目录
                countFilesRecursively(filePath, extension, (recCount) => {
                    count += recCount;
                    if (--files.length === 0) {
                        callback(null, count);
                    }
                });
            } else if (path.extname(filePath) === extension) {
                count++;
                if (--files.length === 0) {
                    callback(null, count);
                }
            } else {
                if (--files.length === 0) {
                    callback(null, count);
                }
            }
        });
    });
}

// 示例:统计当前目录及其子目录下所有.html文件的数量
const directory = '.';
const extension = '.html';

countFilesRecursively(directory, extension, (err, count) => {
    if (err) {
        console.error('读取目录时出错:', err);
    } else {
        console.log(`在目录 '${directory}' 及其子目录下,共有 ${count} 个 .${extension.slice(1)} 文件。`);
    }
});

 

标签:count,fs,const,err,extension,nodejs,后缀,path,格式
From: https://www.cnblogs.com/dhjy123/p/18263993

相关文章

  • [nodejs]package.json里的依赖版本
    依赖分类依赖根据开发环境需要和实际运行环境需要,分为dependencies和devDependencies。例如:typescript和eslint属于devDependencies,而vue和axios等属于dependencies。版本号组成版本由两部分组成,一是前面的前缀符号,二是版本号。这里先介绍版本号。版本号版本号的形式是:a.b......
  • [nodejs]package.json里的依赖版本
    依赖分类依赖根据开发环境需要和实际运行环境需要,分为dependencies和devDependencies。例如:typescript和eslint属于devDependencies,而vue和axios等属于dependencies。版本号组成版本由两部分组成,一是前面的前缀符号,二是版本号。这里先介绍版本号。版本号版本号的形式是:a.b......
  • 详细解析MATLAB和Simulink中的文件格式:mat, mdl, mexw32, 和 m 文件
    matlab探索MATLAB和Simulink中的文件格式:MAT,MDL,MEXW32,和M文件**MAT文件(.mat)****MDL文件(.mdl)****MEX文件(.mexw32/.mexw64)****M文件(.m)****总结**探索MATLAB和Simulink中的文件格式:MAT,MDL,MEXW32,和M文件当你开始使用MATLAB和Simuli......
  • SpringBoot前后端传递数据时常用的JSON格式数据是什么?【讲解JSON概念、语法、以及Java
    SpringBoot前后端传递数据时常用的JSON格式数据是什么?JSON概念JSON语法JSON的两种结构:JSON字符串和Java对象互转:objectMapper.writeValueAsString(person);objectMapper.readValue(jsonStr,Person.class);在SpringMVC框架中,前后端交互会自动转JsonJSON概念JSON:Jav......
  • JSONObject 【解析JSON格式】使用Gson库解析包含数组的JSON
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)JSONObject【......
  • 将socks5列表转换成sing-box格式的json
    将socks5列表转换成sing-box格式的jsonfunctiongetRowMap($tag,$server,$port,$user,$pass){$mRow=[];$mRow['tag']=(string)$tag;$mRow['type']='socks';$mRow['version']='5';$mRow[......
  • python读数据,并且 csv格式的,如何应对。
    s545112015022319.txt要求 通过python 导入程序  高度(距地) 时间 气温  气压 湿度  露点 温露差 虚温 风向 风速 纬度差 经度差0   0 0.0 0.9 1015 38-11.8 12.7 1.6 203 1 0.0 0.01   10 0.......
  • 重新格式化部门表(sql练习)
    表 Department:+---------------+---------+|ColumnName|Type|+---------------+---------+|id|int||revenue|int||month|varchar|+---------------+---------+在SQL中,(id,month)是表的联合主键。这个表......
  • pytest测试框架pytest-html插件生成HTML格式测试报告
    Pytest提供了丰富的插件来扩展其功能,pytest-html插件帮助我们生成HTML格式的测试报告,为我们提供直观、有效的测试结果展示。为了使用pytest-html,需要满足以下条件:·Python3.6或更高版本pytest-html安装使用pip命令安装:pipinstallpytest-html(安装在pytest工程所......
  • 后缀自动机 SAM
    1概述及定义后缀自动机(SAM)是一个强有力的数据结构,可以解决很多经典字符串问题,例如:线性复杂度进行字符串匹配。线性复杂度求出一个字符串的所有不同子串个数。那么我们定义一个字符串\(S\)的SAM是一个可以接受\(S\)所有后缀的最小DFA(确定性有限状态自动机)。也就是说......