本文翻译自:How do you get a list of the names of all files present in a directory in Node.js?

I'm trying to get a list of the names of all the files present in a directory using Node.js. 我正在尝试使用Node.js获取目录中存在的所有文件的名称列表。 I want output that is an array of filenames. 我想要输出是一个文件名数组。 How can I do this? 我怎样才能做到这一点?


#1楼

参考:https://stackoom.com/question/BRSZ/如何获取Node-js目录中存在的所有文件的名称列表


#2楼

Get files in all subdirs 获取所有子目录中的文件

function getFiles (dir, files_){files_ = files_ || [];var files = fs.readdirSync(dir);for (var i in files){var name = dir + '/' + files[i];if (fs.statSync(name).isDirectory()){getFiles(name, files_);} else {files_.push(name);}}return files_;
}console.log(getFiles('path/to/dir'))

#3楼

Here's an asynchronous recursive version. 这是一个异步递归版本。

    function ( path, callback){// the callback gets ( err, files) where files is an array of file namesif( typeof callback !== 'function' ) returnvarresult = [], files = [ path.replace( /\/\s*$/, '' ) ]function traverseFiles (){if( files.length ) {var name = files.shift()fs.stat(name, function( err, stats){if( err ){if( err.errno == 34 ) traverseFiles()// in case there's broken symbolic links or a bad path// skip file instead of sending errorelse callback(err)}else if ( stats.isDirectory() ) fs.readdir( name, function( err, files2 ){if( err ) callback(err)else {files = files2.map( function( file ){ return name + '/' + file } ).concat( files )traverseFiles()}})else{result.push(name)traverseFiles()}})}else callback( null, result )}traverseFiles()}

#4楼

function getFilesRecursiveSync(dir, fileList, optionalFilterFunction) {if (!fileList) {grunt.log.error("Variable 'fileList' is undefined or NULL.");return;}var files = fs.readdirSync(dir);for (var i in files) {if (!files.hasOwnProperty(i)) continue;var name = dir + '/' + files[i];if (fs.statSync(name).isDirectory()) {getFilesRecursiveSync(name, fileList, optionalFilterFunction);} else {if (optionalFilterFunction && optionalFilterFunction(name) !== true)continue;fileList.push(name);}}
}

#5楼

只是抬头:如果您计划对目录中的每个文件执行操作,请尝试使用vinyl-fs (由gulp (流式构建系统)使用)。


#6楼

IMO the most convinient way to do such tasks is to use a glob tool. IMO最方便的方法就是使用glob工具。 Here's a glob package for node.js. 这是node.js的glob包 。 Install with 安装时

npm install glob

Then use wild card to match filenames (example taken from package's website) 然后使用通配符匹配文件名(示例来自包的网站)

var glob = require("glob")// options is optional
glob("**/*.js", options, function (er, files) {// files is an array of filenames.// If the `nonull` option is set, and nothing// was found, then files is ["**/*.js"]// er is an error object or null.
})

如何获取Node.js目录中存在的所有文件的名称列表?相关推荐

  1. puppeteer api_使用Node.js和Puppeteer API生成PDF文件

    puppeteer api Puppeteer is a Node library developed by Google and provides a high-level API for deve ...

  2. 在 Node.js 应用中集成 Redis

    Node.js 在搭建快速轻量型的 HTTP 服务或 Web 应用有其独特的优势:快速而又友好的开发,单线程消息驱动带来的高并发高吞吐.随着 HTTP 服务或者 Web 应用访问量的加大,传统数据库的 ...

  3. 详解Node.js开发中不可或缺的7个库

    在Node.js开发中,选择合适的库对于提高开发效率和优化应用程序性能至关重要.本文将介绍七个备受关注的Node.js库,它们在各自的领域中展现了出色的功能和性能.这些库分别是:Config.Fetc ...

  4. 计算机目录读取,从项目目录中读取SQL查询文件(Read SQL query file from project directory)...

    从项目目录中读取SQL查询文件(Read SQL query file from project directory) 我在Visual Studio项目中放置了3个特别大的SQL查询,位于项目目录中 ...

  5. Autodesk Forge Viewer与Forge API Node.js客户端SDK的TypeScript声明文件发布!

    作为一个凝聚专(jie)业(cao)精(man)神(man)的团队(Autodesk ADN),这大过?年的岂能没有一点表示?!花式红包什么的早已化境,技术分享大家也审low疲劳了,所以我们这就本着M ...

  6. 有没有办法为Node.js项目自动构建package.json文件

    本文翻译自:Is there a way to automatically build the package.json file for Node.js projects Is package.js ...

  7. 除去虚拟目录中的旧版本文件(临时文件下载、归档文件下载)

    临时文件下载 严重性:低 CVSS 分数: 5.0 URL: 实体: code (Page) 风险: 可能会下载临时脚本文件,这会泄露应用程序逻辑及其他诸如用户名和密码之类的敏感信息 原因: 在生产环 ...

  8. python找不到文件数据_在使用python pykitti packag的目录中找不到文件

    我正在使用pykitti包来可视化python中的KITTI数据集.找不到需要的校准文件.它在指定的目录中查找这些校准文件.我指定了它应该在其中查找这些文件的目录.但是,它仍然给我一个错误: File ...

  9. Windows下快速获取一个文件夹下所有文件的名称列表

    Windows下快速获取一个文件夹下所有文件的名称列表 进入windows终端:win+R 输入cmd,回车 使用cd命令进入到目标文件夹.例如: 先进入D盘,输入d: 回车, 然后 cd openc ...

最新文章

  1. anki_Anki如何挽救我的工程生涯
  2. AI 女神李飞飞最新文章:发展人工智能应该以人为本
  3. 一只53万!波士顿动力网红机器狗开售,充电器价格1万多!
  4. Flutter——设置appBar的高度
  5. exp--求以e为底的指数函数
  6. 【Python】青少年蓝桥杯_每日一题_1.19_Python 求和
  7. Dubbo-go v3.0 正式发布 ——打造国内一流开源 Go 服务框架
  8. BCALV* 查看所有ALV DEMO
  9. 用nodejs做一个svn密码修改页面
  10. cntrol层的代码作用
  11. 凯西·奥尼尔:盲目信仰大数据的时代必须结束 | 算法密码
  12. CAD迷你看图 for Mac(强大的cad看图软件)
  13. 计算机程序员 面试题库,计算机软考程序员面试题精选题2
  14. Mac 配置L2TP 隧道连接操作步骤
  15. SAR信号处理之窗函数8——布莱克曼(Blackman)窗
  16. Machine Learning笔记——逻辑回归算法
  17. 建筑企业收并购系列二:吸收合并政策影响
  18. linux命令part,技术|十个鲜为人知的 Linux 命令-Part 3
  19. 将IDEA上面写的代码上传到gitee仓库保姆式教程
  20. IDEA同时同步代码到GitHub和Gitee

热门文章

  1. FlycoTabLayout使用
  2. Android 内存泄漏问题分析 指南
  3. Android String.xml 批量翻译工具 | Android string.xml 各国语言转换
  4. Java第一个程序(CMD环境)
  5. Android之Apache接口
  6. Android之SharedPreferences 讲解
  7. 鸿蒙武器排行榜,刺客伍六七武器排行榜,剪刀垫底,魔刀仅排第二,图四才是最强武器...
  8. ubuntu 下 Could not get lock /var/lib/dpkg/lock解决方案
  9. VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法...
  10. OWASP top 10 (2017) 学习笔记--失效的身份验证