ES6实现的遍历目录函数示例
本文实例讲述了ES6实现的遍历目录函数。分享给大家供大家参考,具体如下:
// npm init // npm install koa --save-dev // node --harmony app.js const fs = require('fs'); var eachDir = (() => { let queue = []; var eachFiles = (options) => { if (queue.length) { let path = queue.shift(); fs.readdir(path, (err, files) => { if (err) { options.fail(err); return; } files.forEach((file, i) => { let url = path + '/' + file; let stats = fs.statSync(url); if (stats.isDirectory()) { queue.push(url); } else { options.callback && options.callback.call(stats, { name: file, size: stats.size, path: url }); } }); eachFiles(options); }); } else { options.done(); } }; return (path, options) => { let stats = fs.statSync(path); if (stats.isDirectory()) { queue.push(path); } eachFiles(options); }; })(); let total = 0, fileTypes = {}; eachDir('./', { callback(file) { let ret = file.name.match(/\.(\w+$)/); if (ret) { if (!fileTypes[ret[0]]) { fileTypes[ret[0]] = 0; } fileTypes[ret[0]] += 1; } // console.log(file); total++; }, done() { console.log(total, fileTypes); fs.writeFile('./result.txt', JSON.stringify(fileTypes), (err) => { if (err) throw err; console.log('done'); }); }, fail(err) { console.log(err); } });
希望本文所述对大家ECMAScript程序设计有所帮助。
相关推荐
-
ES6中Array.copyWithin()函数的用法实例详解
ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去. Array.prototype.copyWithin(target, start = 0, end = this.length) 该函数有三个参数. target:目的起始位置. start:复制源的起始位置,可以省略,可以是负数. end:复制源的结束位置,可以省略,可以是负数,实际结束位置是end-1. 例: 把第3个元素(从0开始)到第5个元素,复制并覆盖到以第1个位置
-
详解Javascript ES6中的箭头函数(Arrow Functions)
ES6可以使用"箭头"(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 1. 具有一个参数的简单函数 var single = a => a single('hello, world') // 'hello, world' 2. 没有参数的需要用在箭头前加上小括号 var log = () => { alert('no param') } 3. 多个参数需要用到小括号,参数间逗号间隔,例如两个数字相加 var add = (a, b) =&g
-
ES6记录异步函数的执行时间详解
calc calc 是一个我们想要做剖析(性能分析)的异步函数.按照惯例,它的最后一个参数是一个callback.我们像这样使用 calc: calc(arg, (err, res) => console.log(err || res)) 或许,最简单的对 calc 这样的函数来剖析性能的方法是,增加一个计时逻辑到我们需要分析的地方: const t0 = Date.now() calc(arg, (err, res) => { const t1 = Date.now() console.lo
-
浅析Javascript ES6新增值比较函数Object.is
在Object.is出现之前我们比较值使用两等号 "==" 或 三等号"===", 三等号更加严格,只要比较两方类型不同立即返回false. 另外,有且只有一个值不和自己相等,它是NaN 现在ES6又加了一个Object.is,让比较运算的江湖更加混乱. 多数情况下Object.is等价于"===",如下 1 === 1 // true Object.is(1, 1) // true 'a' === 'a' // true Object.is('
-
深入浅出ES6新特性之函数默认参数和箭头函数
1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者false时,会直接取到后面的值,而不是传入的这个参数值. 那怎么解决呢?对于上图的代码,可以通过判断是否传入了num参数,没有就用默认值: 这种做法还是很麻烦的,而ES6则直接在参数定义里面设置函数参数的默认值,而且不用担心传入参数是0或者false会出错了: 2.箭头函数 箭头函数用 => 符号来定义. 箭头函数相当于匿名函数,所以采用函数表达式的写法
-
JS ES6中setTimeout函数的执行上下文示例
本文介绍的是setTimeout函数,延迟执行函数里的执行上下文,分享给大家供大家参考学习,来看看详细的内容: (1)ES5中,setTimeout里面的函数的执行上下文为全局上下文,举例来说: function log(){ setTimeout(function(){console.log(this.id)},100) } var id=42 log.call({id:21}) //输出的结果为42 我们可以看到setTimeout,被延迟执行的函数,里面的this,指向的是全局作用域,也就
-
ES6中的箭头函数实例详解
本文实例讲述了ES6中的箭头函数.分享给大家供大家参考,具体如下: 语法 我们先来看看箭头函数的语法: ([param] [, param]) => { statements } param => expression param 是参数,根据参数个数不同,分这几种情况: () => { - } // 零个参数用 () 表示: x => { - } // 一个参数可以省略 (): (x, y) => { - } // 多参数不能省略 (): 示例 我们再来看看一些示例,看看在
-
ES6实现的遍历目录函数示例
本文实例讲述了ES6实现的遍历目录函数.分享给大家供大家参考,具体如下: // npm init // npm install koa --save-dev // node --harmony app.js const fs = require('fs'); var eachDir = (() => { let queue = []; var eachFiles = (options) => { if (queue.length) { let path = queue.shift(); fs.
-
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
在进行PHP编程时,需要对服务器某个目录下面的文件进行浏览,通常成为遍历目录.取得一个目录下的文件和子目录,就需要用到opendir()函数.readdir()函数.closedir()函数和rewinddir()函数. ①函数opendir() 函数opendir()用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型).如果该目录不存在或者没有访问权限,则返回FALSE. ②函数readdir() 函数readdir()用于读取指定目录,
-
PHP采用自定义函数实现遍历目录下所有文件的方法
目录的遍历是PHP程序设计中经常会用到的一个功能,很多PHP项目都有这一功能模块.今天本文就来实例解析一下PHP采用自定义函数实现遍历目录下所有文件的方法.具体方法如下: 方法一:使用readir()遍历目录 实现代码如下: function listDir($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while($file = readdir($handle)) { if($file != '.' && $file !
-
PHP使用glob函数遍历目录或文件夹的方法
本文实例讲述了PHP使用glob函数遍历目录或文件夹的方法.分享给大家供大家参考.具体分析如下: 一说到php遍历目录我们很多朋友会想到是opendir与readdir,这样就可以遍历目录并显示文件,但在php中有一个更简洁的遍历目录的函数glob估计很少有人知道此函数,不过我觉得比起opendir与readdir要简单多了. PHP glob函数的使用:glob-寻找与模式匹配的文件路径. 例子,代码如下: 复制代码 代码如下: <?php $fileList=glob('*.*'); for
-
asp遍历目录及子目录的函数
<%@ Language=vbscript %> <% '遍历目录以及目录下文件的函数 %> <% Function Bianli(path) Set Fso=server.createobject("scripting.filesystemobject") On Error Resume Next Set Objfolder=fso.getfolder(path) Set Objsubfolders=objfolder
-
遍历目录以及目录下文件的函数
<%@ Language=VBScript %> <% '遍历目录以及目录下文件的函数, %> <% function bianli(path) set fso=server.CreateObject("scripting.filesystemobject") on error resume next set objFolder=fso.GetFolder(path) set objSubFolders=objFolder.Subfolders for e
-
node.js遍历目录的方法示例
本文介绍了node.js遍历目录的方法示例,分享给大家,也给自己留个笔记,具体如下 同步遍历 const fs = require('fs'); const path=require('path'); function travel(dir,callback){ fs.readdirSync(dir).forEach((file)=>{ var pathname=path.join(dir,file) if(fs.statSync(pathname).isDirectory()){ travel
-
php遍历目录viewDir函数
复制代码 代码如下: <?php /** * 遍历目录,找出目录下某个后缀名的所有文件 * */ function viewDir ($directory, $ext) { if (is_dir($directory)) { $handle = opendir($directory); while ($file = readdir($handle)){ $subdir = $directory . '/' .$file; if ($file != '.' && $file !='..
-
php遍历目录下文件并按修改时间排序操作示例
本文实例讲述了php遍历目录下文件并按修改时间排序操作.分享给大家供大家参考,具体如下: php 遍历目录下文件方法 //遍历目录下文件方法 function printdir($dir) { $files = array(); //opendir() 打开目录句柄 if($handle = @opendir($dir)){ //readdir()从目录句柄中(resource,之前由opendir()打开)读取条目, // 如果没有则返回false while(($file = readdir
-
易语言非递归算法遍历目录的代码示例
非递归算法遍历目录 .版本 2 .支持库 shell .支持库 EDataStructure .支持库 iext .程序集 窗口程序集1 .子程序 _按钮_浏览_被单击 编辑框_目录.内容 = 浏览文件夹 ("选择目录:", 假) .子程序 枚举文件 .参数 目录, 文本型 .局部变量 队列, 队列 .局部变量 节点, 节点 .局部变量 节点1, 节点 .局部变量 路径, 文本型 .局部变量 文件夹名称, 文本型 .局部变量 文件名, 文本型 .局部变量 文件数目, 整数型 节点.加入
随机推荐
- JS继承--原型链继承和类式继承
- jQuery Raty 一款不错的星级评分插件
- 基于AngularJS实现页面滚动到底自动加载数据的功能
- JS点击图片改变图片图径并用正则表达式取图片名的代码
- 正则表达式中的正向预查和负向预查实例分析
- python根据路径导入模块的方法
- asp.net文件上传示例分享
- 赫赫大名的A*寻路算法(vb.net版本)
- Javascript 实现计算器时间功能详解及实例(二)
- js setTimeout()函数介绍及应用以倒计时为例
- JSP中正则表达式用法实例
- python复制与引用用法分析
- Android 动画(View动画,帧动画,属性动画)详细介绍
- windows 下忘记mysql root密码的更改方法
- CSS对Web页面载入效率的影响分析总结
- C#微信公众平台开发之高级群发接口
- 详解Spring batch 入门学习教程(附源码)
- Devexpress treelist 简介
- Java学习笔记之观察者模式
- java实现动态时钟并设置闹钟功能