nodejs实现遍历文件夹并统计文件大小

要实现遍历文件夹并统计文件大小,我们需要使用nodejs提供的fs模块来操作文件系统,并使用递归函数遍历文件夹。以下是具体步骤:

步骤1 - 引入模块

首先需要引入fs模块,它可以方便地对文件和文件夹进行操作。我们还需要引入path模块,它可以处理路径。

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

步骤2 - 定义递归函数

递归函数是遍历文件夹的核心。下面是一个简单的递归函数示例。

function getFolderSize(dir) {
  let size = 0;
  fs.readdirSync(dir).forEach(file => {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    if (stat.isDirectory()) {
      size += getFolderSize(filePath);
    } else {
      size += stat.size;
    }
  });
  return size;
}

递归函数的参数是要遍历的文件夹路径。在函数内部,我们使用fs.readdirSync方法读取文件夹的内容,并使用forEach方法遍历返回的结果。对于每一个文件或子文件夹,我们使用fs.statSync方法获取其详细信息,包括大小、创建时间等。如果是子文件夹,我们递归调用getFolderSize函数求其大小。

步骤3 - 调用递归函数

调用getFolderSize函数时,传入要遍历的文件夹路径。例如:

const folderSize = getFolderSize('D:/My Documents');
console.log('The size of the folder is:', folderSize, 'bytes');

这样就可输出所需遍历文件夹的大小。

示例1 - 遍历本地文件夹

下面是一个简单的示例,演示如何遍历本地文件夹,输出每个文件的大小。

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

function walk(dir, fileCallback, error) {
  fs.readdir(dir, (err, files) => {
    if (err) return error(err);
    files.forEach(file => {
      const filepath = path.join(dir, file);
      fs.stat(filepath, (err, stats) => {
        if (err) return error(err);
        if (stats.isDirectory()) {
          walk(filepath, fileCallback, error);
        } else {
          fileCallback(filepath, stats);
        }
      });
    });
  });
}

walk('./test', (file, stats) => {
  console.log(`${file} - ${stats.size}`);
}, (err) => {
  console.log(`Error: ${err}`);
});

在上面的例子中,walk函数封装了遍历文件夹的任务。它接受3个参数:

  • dir:要遍历的文件夹路径;
  • fileCallback:对于每个文件,执行该回调函数;
  • error:发生错误时执行该回调函数。

其中,fileCallback函数接受两个参数:文件路径和文件信息对象。我们在该函数中输出每个文件的大小。

示例2 - 显示文件夹大小

下面是一个稍微复杂一些的示例,演示如何在遍历的同时累加文件夹大小,最终输出文件夹大小。

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

function getFolderSize(dir) {
  let size = 0;
  fs.readdirSync(dir).forEach(file => {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    if (stat.isDirectory()) {
      size += getFolderSize(filePath);
    } else {
      size += stat.size;
    }
  });
  return size;
}

const folderSize = getFolderSize('./test');
console.log(`The size of the folder is ${folderSize} bytes`);

在上面的例子中,getFolderSize函数返回文件夹的大小。我们在函数内部使用forEach方法遍历文件夹中的全部文件,并使用fs.statSync方法获取每个文件的详细信息。如果是子文件夹,我们递归调用getFolderSize方法累加其大小。

最后,我们调用getFolderSize函数,传入文件夹路径。getFolderSize函数返回文件夹大小,并赋值给变量folderSize。最后,我们将变量folderSize输出到控制台,显示文件夹的大小。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs实现遍历文件夹并统计文件大小 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中ws模块创建服务端与客户端实例代码

    下面是关于“node.js中ws模块创建服务端与客户端实例代码”的完整攻略。 1. 安装ws模块 在开始使用ws模块之前,需要安装ws模块,可以使用npm进行安装。 npm install ws –save 2. 创建WebSocket服务端 首先需要引入ws模块,然后创建一个WebSocketServer对象,监听指定的端口。 示例代码: const W…

    node js 2023年6月8日
    00
  • TypeScript安装与使用的详细教程

    下面是TypeScript安装与使用的详细教程: 安装 1. 安装node.js 首先,我们需要安装node.js,可以使用node.js官网提供的安装包进行安装。 2. 安装TypeScript node.js安装完成后,我们可以使用npm命令安装TypeScript。在命令行工具中执行以下命令: npm install -g typescript 这样就…

    node js 2023年6月8日
    00
  • 小心!AngularJS结合RequireJS做文件合并压缩的那些坑

    小心!AngularJS结合RequireJS做文件合并压缩的那些坑 背景简介 现在前端开发已经不仅仅是一些简单的HTML、CSS和JS代码堆砌了,对于一个成熟的前端项目我们必须考虑到一些比较高级的技术的应用,尤其是在文件打包合并等方面。本文主要讲解在使用AngularJS结合RequireJS做文件合并压缩时需要注意的一些“坑”。 正确的姿势 1. Req…

    node js 2023年6月8日
    00
  • Vue项目通过node连接MySQL数据库并实现增删改查操作的过程详解

    让我详细讲解一下Vue项目通过node连接MySQL数据库并实现增删改查操作的过程。 准备工作 首先,你需要有一个Vue项目,可以使用Vue CLI等工具创建一个空白项目。 其次,你需要安装一些依赖,包括mysql、express、body-parser、cors等,可以通过npm install命令安装。 创建数据库和数据表 打开MySQL数据库客户端,创…

    node js 2023年6月8日
    00
  • node.js调用脚本(python/shell)和系统命令

    下面是详细的攻略: node.js调用脚本(python/shell)和系统命令 Node.js可以执行本地命令行工具、调用Python或Shell脚本,以及调用像C++等其他编程语言编写的本地模块。 执行系统命令 Node.js可以轻松地执行本地命令行工具,如ls、rm、mkdir等。使用Node.js的child_process模块可以实现该功能。 以下…

    node js 2023年6月8日
    00
  • nodejs实现的http、https 请求封装操作示例

    下面给出“nodejs实现的http、https请求封装操作示例”的完整攻略。 一、介绍 在Node.js中,我们可以使用http模块和https模块来进行网络请求操作。 http模块用于在Node.js中创建HTTP服务和客户端,可以实现GET请求和POST请求等操作。https模块是在http模块的基础上进行了SSL/TLS加密处理,用于进行HTTPS请…

    node js 2023年6月8日
    00
  • windows系统下更新nodejs版本的方案

    更新 Node.js 版本通常需要在 Windows 系统下使用命令行工具进一步操作。下面的攻略将介绍如何从较旧版本更新到最新版本的 Node.js。 步骤一:卸载旧版本 在安装新版本之前,必须卸载旧版本。在 Windows 系统中,可以使用“控制面板”来卸载 Node.js。 打开“控制面板”,并进入“程序和功能”。 在列表中找到旧版本 Node.js,右…

    node js 2023年6月8日
    00
  • Node.js 使用递归实现遍历文件夹中所有文件

    下面是如何使用 Node.js 递归实现遍历文件夹中所有文件的完整攻略。 需要用到的 Node.js 模块 首先,我们需要 Node.js 来处理文件系统的操作,需要两个核心模块: fs模块 :用于访问文件系统。 path 模块:用于处理文件路径的工具。 因此,我们在开始之前需要先引入这两个模块。 const fs = require(‘fs’); cons…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部