node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > Node.js遍历处理文件

用Node.js遍历多级目录处理文件的代码详解

作者:Demon_Laplace

在日常开发中,处理大量的文件操作是一个常见的需求,特别是在图像处理和存档管理领域,本文给大家介绍了如何用Node.js遍历多级目录处理文件,文章给出了主要步骤和完整代码,需要的朋友可以参考下

在日常开发中,处理大量的文件操作是一个常见的需求,特别是在图像处理和存档管理领域。设想一个场景:运营团队需要快速处理数千张产品图片,并将它们整理到公司的存储系统中。然而,这些图片通常分布在多个子文件夹中,且文件结构复杂。如果手动完成这个过程,不仅费时费力,还容易出错。因此,开发一个自动化脚本来处理这项任务显得尤为重要。

需求如下:

通过Node脚本,运营团队只需提供图片存储的主目录和目标目录,便可一键完成图片的整理和归档,显著提升工作效率。同时,保留目录结构的做法也确保了图片管理的有序性,为后续的检索和使用提供了便利。这种自动化工具不仅可以用于电商平台,也适用于任何需要批量处理文件的场景,如数字资产管理、媒体存档等。

主要步骤

完整代码

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

// 定义支持的图片扩展名
const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg'];

// 遍历文件夹的异步函数
async function traverseDirectory(inputDir, outputDir, callback) {
  try {
    const files = await fs.readdir(inputDir);
    
    for (const file of files) {
      const inputFilePath = path.join(inputDir, file);
      const stats = await fs.stat(inputFilePath);

      if (stats.isDirectory()) {
        // 如果是文件夹,递归遍历
        const newOutputDir = path.join(outputDir, file);
        await fs.mkdir(newOutputDir, { recursive: true });
        await traverseDirectory(inputFilePath, newOutputDir, callback);
      } else if (stats.isFile()) {
        // 如果是文件,检查是否是图片
        const ext = path.extname(file).toLowerCase();
        if (imageExtensions.includes(ext)) {
          const outputFilePath = path.join(outputDir, file);
          await callback(inputFilePath, outputFilePath);
        }
      }
    }
  } catch (err) {
    console.error(`Error processing directory ${inputDir}:`, err);
  }
}

// 使用示例
const inputDirectory = '/path/to/your/input/directory'; // 修改为你的输入文件夹路径
const outputDirectory = '/path/to/your/output/directory'; // 修改为你的输出文件夹路径

// 主函数,处理文件遍历和复制
async function main() {
  await traverseDirectory(inputDirectory, outputDirectory, async (inputFilePath, outputFilePath) => {
    // 替换成真实业务图片操作,这里简单拷贝
    try {
      await fs.copyFile(inputFilePath, outputFilePath);
      console.log(`Copied ${inputFilePath} to ${outputFilePath}`);
    } catch (err) {
      console.error(`Error copying ${inputFilePath} to ${outputFilePath}:`, err);
    }
  });
}

// 执行主函数
main();

使用方法

这段代码会按顺序遍历指定输入目录及其子目录中的所有图片文件,复制到目标目录并保持原有的目录结构。

到此这篇关于用Node.js遍历多级目录处理文件的代码详解的文章就介绍到这了,更多相关Node.js遍历处理文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文