首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

ES6 系列之异步处理实战

fs.readdir readdir 方法用于读取目录,返回一个包含文件和目录的数组。 fs.stat stat 方法的参数是一个文件或目录,它产生一个对象,该对象包含了该文件或目录的具体信息。...思路分析 我们基本的实现思路就是: 用 fs.readdir 获取指定目录的内容信息 循环遍历内容信息,使用 fs.stat 获取该文件或者目录的具体信息 将具体信息储存起来 当全部储存起来后,筛选其中的是文件的信息...require('fs'); var path = require('path'); function findLargest(dir, cb) { // 读取目录下的所有文件 fs.readdir...= function(dir) { return new Promise(function(resolve, reject) { fs.readdir(dir, function...= function(dir) { return new Promise(function(resolve, reject) { fs.readdir(dir, function

32220

Linux笔记(6)| 文件属性

3、读取目录文件 DIR *opendir(const char *name); DIR *fdopendir(int fd); struct dirent *readdir(DIR *dirp);...d_name[256]; /* Null-terminated filename */ }; (1)opendir打开一个目录后得到一个DIR类型的指针给readdir...使用 (2)readdir函数调用一次就会返回一个structdirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。...(3)readdir调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。...readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。

1.5K30

比ls快8倍?百万级文件遍历的奇技淫巧

ls会首先调用opendir打开一个目录,然后循环调用readdir这个glibc中的函数直到遇到目录流的结尾,也即读完所有的目录项(dentry)为止。...我们首先看一下man page里面对于readdir的定义: struct dirent *readdir(DIR *dirp); readdir返回一个指向dirent结构体的指针,指向目录流dirp...讲完目录流的buffer大小是怎么确定的之后,让我们回到readdir的glibc实现。 ?...3.解决方法 既然glibc中readdir的buffer大小我们没法控制,何不绕过readdir直接调用getdents,在这个系统调用中我们可以直接控制buffer的大小,以下就是一个简单的例子listdir.c...总结 其实不止是ls命令,其他一些命令如rm -r等的实现中都会用到glibc中的readdir函数,所以如果遇到操作百万级文件的大目录这种场景(当然实践中不提倡一个目录下放这么多文件),不妨直接调用getdents

1.8K30
领券