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

相关文章

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

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

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

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

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

mysql递归查询语法WITH RECURSIVE的使用

《mysql递归查询语法WITHRECURSIVE的使用》本文主要介绍了mysql递归查询语法WITHRECURSIVE的使用,WITHRECURSIVE用于执行递归查询,特别适合处理层级结构或递归... 目录基本语法结构:关键部分解析:递归查询的工作流程:示例:员工与经理的层级关系解释:示例:树形结构的数

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t