node.js递归打印文件目录、文件名

2023-12-08 07:18

本文主要是介绍node.js递归打印文件目录、文件名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

var fs = require('fs');
var sep = require('path').sep;

/**
 * 递归打印文件目录、文件名
 */
var readDir = function(path) {var exists = fs.existsSync(path),
        stat = fs.statSync(path);

    if (exists && stat) { //判断文件、文件目录是否存在
        if (stat.isFile()) {var fpath = path.split(sep);
            console.info(symbol(fpath) + fpath[fpath.length - 1]);
        } else if (stat.isDirectory()) {var fpath = path.split(sep);
            console.info(symbol(fpath) + fpath[fpath.length - 1]);
            var files = fs.readdirSync(path);
            if (files && files.length > 0) {files.forEach(function(file) {readDir(path + sep + file); //递归
                });
            }}} else {console.info('根目录不存在.');
    }
};

//符号拼接。
//为了省事,这里采用了字符串拼接的方式,最优的方式应该用buffer来做字符拼接。
var symbol = function(fpath) {var s = ' - ';
    for (var i = 1; i < fpath.length; i++) {s += ' - ';
    }return s;
};

readDir('node_modules/ccap');

样例:


/usr/local/bin/node test.js
 -  - ccap
 -  -  - .npmignore
 -  -  - .travis.yml
 -  -  - addon
 -  -  -  - cap.cc
 -  -  -  - cap.h
 -  -  -  - hcaptha.cc
 -  -  -  - jpeglib
 -  -  -  -  - CImg.h
 -  -  -  -  - Licence_CeCILL-C_V1-en.txt
 -  -  -  -  - Licence_CeCILL_V2-en.txt
 -  -  -  -  - README.txt
 -  -  -  -  - cderror.h
 -  -  -  -  - cdjpeg.h
 -  -  -  -  - jaricom.c
 -  -  -  -  - jcapimin.c
 -  -  -  -  - jcapistd.c
 -  -  -  -  - jcarith.c
 -  -  -  -  - jccoefct.c
 -  -  -  -  - jccolor.c
 -  -  -  -  - jcdctmgr.c
 -  -  -  -  - jchuff.c
 -  -  -  -  - jcinit.c
 -  -  -  -  - jcmainct.c
 -  -  -  -  - jcmarker.c
 -  -  -  -  - jcmaster.c
 -  -  -  -  - jcomapi.c
 -  -  -  -  - jconfig.h
 -  -  -  -  - jcparam.c
 -  -  -  -  - jcprepct.c
 -  -  -  -  - jcsample.c
 -  -  -  -  - jctrans.c
 -  -  -  -  - jdapimin.c
 -  -  -  -  - jdapistd.c
 -  -  -  -  - jdarith.c
 -  -  -  -  - jdatadst.c
 -  -  -  -  - jdatasrc.c
 -  -  -  -  - jdcoefct.c
 -  -  -  -  - jdcolor.c
 -  -  -  -  - jdct.h
 -  -  -  -  - jddctmgr.c
 -  -  -  -  - jdhuff.c
 -  -  -  -  - jdinput.c
 -  -  -  -  - jdmainct.c
 -  -  -  -  - jdmarker.c
 -  -  -  -  - jdmaster.c
 -  -  -  -  - jdmerge.c
 -  -  -  -  - jdpostct.c
 -  -  -  -  - jdsample.c
 -  -  -  -  - jdtrans.c
 -  -  -  -  - jerror.c
 -  -  -  -  - jerror.h
 -  -  -  -  - jfdctflt.c
 -  -  -  -  - jfdctfst.c
 -  -  -  -  - jfdctint.c
 -  -  -  -  - jidctflt.c
 -  -  -  -  - jidctfst.c
 -  -  -  -  - jidctint.c
 -  -  -  -  - jinclude.h
 -  -  -  -  - jmemmgr.c
 -  -  -  -  - jmemnobs.c
 -  -  -  -  - jmemsys.h
 -  -  -  -  - jmorecfg.h
 -  -  -  -  - jpegint.h
 -  -  -  -  - jpeglib.h
 -  -  -  -  - jquant1.c
 -  -  -  -  - jquant2.c
 -  -  -  -  - jutils.c
 -  -  -  -  - jversion.h
 -  -  -  -  - libjpeg.so
 -  -  -  -  - plugins
 -  -  -  -  -  - add_fileformat.h
 -  -  -  -  -  - cimgIPL.h
 -  -  -  -  -  - cimg_ipl.h
 -  -  -  -  -  - cimgmatlab.h
 -  -  -  -  -  - draw_gradient.h
 -  -  -  -  -  - jpeg_buffer.h
 -  -  -  -  -  - loop_macros.h
 -  -  -  -  -  - nlmeans.h
 -  -  -  -  -  - skeleton.h
 -  -  -  -  -  - vrml.h
 -  -  -  -  -  - vtk.h
 -  -  -  -  - resources
 -  -  -  -  -  - compile_win_icl.bat
 -  -  -  -  -  - compile_win_visualcpp.bat
 -  -  -  -  - transupp.h
 -  -  -  - libjpeg.dll
 -  -  - benchmark
 -  -  -  - generate.js
 -  -  - binding.gyp
 -  -  - build
 -  -  -  - Makefile
 -  -  -  - Release
 -  -  -  -  - .deps
 -  -  -  -  -  - Release
 -  -  -  -  -  -  - hcaptha.node.d
 -  -  -  -  -  -  - obj.target
 -  -  -  -  -  -  -  - hcaptha
 -  -  -  -  -  -  -  -  - addon
 -  -  -  -  -  -  -  -  -  - cap.o.d
 -  -  -  -  -  -  -  -  -  - hcaptha.o.d
 -  -  -  -  - hcaptha.node
 -  -  -  -  - obj.target
 -  -  -  -  -  - hcaptha
 -  -  -  -  -  -  - addon
 -  -  -  -  -  -  -  - cap.o
 -  -  -  -  -  -  -  - hcaptha.o
 -  -  -  - binding.Makefile
 -  -  -  - config.gypi
 -  -  -  - gyp-mac-tool
 -  -  -  - hcaptha.target.mk
 -  -  - cap_img
 -  -  - example
 -  -  -  - custom_get.js
 -  -  -  - custom_get2.js
 -  -  -  - default_get.js
 -  -  -  - web_example.js
 -  -  - index.js
 -  -  - lib
 -  -  -  - dir.js
 -  -  -  - gen.js
 -  -  -  - hcap.js
 -  -  -  - timer.js
 -  -  - make.js
 -  -  - node_modules
 -  -  -  - nan
 -  -  -  -  - .dntrc
 -  -  -  -  - CHANGELOG.md
 -  -  -  -  - LICENSE.md
 -  -  -  -  - appveyor.yml
 -  -  -  -  - include_dirs.js
 -  -  -  -  - nan.h
 -  -  -  -  - nan_implementation_12_inl.h
 -  -  -  -  - nan_implementation_pre_12_inl.h
 -  -  -  -  - nan_new.h
 -  -  -  -  - nan_string_bytes.h
 -  -  -  -  - package.json
 -  -  -  - node-schedule
 -  -  -  -  - .npmignore
 -  -  -  -  - README.md
 -  -  -  -  - lib
 -  -  -  -  -  - increment.js
 -  -  -  -  -  - schedule.js
 -  -  -  -  - package.json
 -  -  -  -  - test
 -  -  -  -  -  - convenience-method-test.js
 -  -  -  -  -  - date-convenience-methods-test.js
 -  -  -  -  -  - job-test.js
 -  -  -  -  -  - range-test.js
 -  -  -  -  -  - recurrence-rule-test.js
 -  -  - package.json
 -  -  - readme.md
 -  -  - test
 -  -  -  - main_test.js


Process finished with exit code 0


这篇关于node.js递归打印文件目录、文件名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/468994

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho