·       ftw()

相关函数:opendir
表头文件:#include <ftw.h>
定义函数:int  ftw(const char *dir, int (*fn) (const *file, const struct stat *sb, int flag), int depth)
函数说明:ftw() 会从参数dir指定的目录开始,往下一层层地递归式遍历子目录。ftw()会传三个参数给fn(), 第一个参数*file指向当时所在的目录路径,第二个参数是*sb, 为stat结构指针,第三个参数为旗标,有下面几种可能值
FTW_F        一般文件
FTW_D       目录
FTW_DNR    不可读取的目录,此目录以下将不被遍历
FTW_SL       符号连接
FTW_NS       无法取得stat结构数据,有可能是权限问题

最后一个参数depth代表ftw()在进行遍历目录时同时打开的文件数。ftw()在遍历时每一层目录至少需要一个文件描述词,如果遍历时用完了depth所给予的限制数目,整个遍历将因不断地关文件和开文件操作而显得缓慢
      如果要结束ftw()的遍历,fn()只需返回一非零值即可,此值同时也会是ftw()的返回值。否则ftw()会试着走完所有的目录,然后返回0

返回  值:遍历中断则返回fn()函数的返回值,全部遍历则返回0,若有错误发生则返回-1
附加说明:由于ftw()会动态配置内存使用,请使用正常方式(fn函数返回非零值)来中断遍历,不要在fn函数中使用longjmp()

 

nftw遍历目录树

表头文件:#include  <ftw.h>
定义函数:int nftw(const char *dir, int  (*fn)(const char *file, const struct stat *sb, int flag, struct FTW *s),
               depth, int  flags)
函数说明:nftw()与ftw()很像,都是从参数dir指定的目录开始,往下一层层地递归遍历子目录。每进入一个目录,便会调用参数*fn定义的函数来处理。nftw()会传四个参数给fn(). 第一个参数*file指向当时所在的目录路径,第二个参数是*sb, 为stat结构指针(结构定义请参考stat()),第三个参数为旗标,有底下几种可能值:
FTW_F                         一般文件
FTW_D                         目录
FTW_DNR                      不可读取的目录。此目录以下将不被遍历
FTW_SL                         符号连接
FTW_NS                        无法取得stat结构数据,在可能是权限问题
FTW_DP                        目录,而且子目录都已被遍历过了
FTW_SLN                       符号连接,但连接不存在的文件

fn()的第四个参数是FTW结构,定义如下:

struct  FTW
{
     int  base;
     int  level; //level代表遍历时的深度
}

nftw()第三个参数depth代表nftw()在进行遍历目录时可同时打开的文件数。
ftw()在遍历时每一层目录至少需要一个文件描述词,如果遍历时用完了depth所给予的限制数目,整个遍历将因不断地关文件和开文件操作而显得的缓慢

nftw()最后一个参数flags用来指定遍历时的动作,可指定下列的操作或用OR组合
FTW_CHDIR                 在读目录之前先用chdir()移到此目录
FTW_DEPTH                执行深度优先搜索。在遍历此目录前先将所有子目录遍历完
FTW_MOUNT               遍历时不要跨越到其他文件系统
FTW_PHYS                  不要遍历符号连接的目录。预设会遍历符号连接目录

如果要结束nftw()的遍历,fn()只需返回一非0值即可,此值同时也会是nftw()的返回值。否则nftw()会试着遍历完所有目录,然后返回0

返回值:遍历中断则返回fn()函数的返回值,全部遍历完则返回0,若有错误发生则返回-1

遍历目录 nftw and ftw相关推荐

  1. linux下遍历目录树方法总结,linux下遍历目录树方法总结(下)

    2.使用ftw调用遍历目录 2.1ftw函数族 使用readdir函数等实现递归遍历目录树的方法比较原始,glibc2.1收录了ftw等函数,可以方便实现目录树的遍历. #include intftw ...

  2. linux c 遍历目录 及 目录下文件

    目录 递归实现 非递归实现 我们知道,许多操作系统中的目录结构都是使用树结构. 使用递归的方法定义树是比较容易的.一棵树地一些节点的集合. 这个集合可以为空,若非空,则树由树根和0个或者多个非空的子树 ...

  3. window和linux下遍历目录的比较

    window下,遍历目录主要是用FindFirstFile和FindNextFile,而linux下是用opendir和readdir实现 void scanFile(char *szDir) {WI ...

  4. 在Linux下和Windows下遍历目录的方法及如何达成一致性操作

    最近因为测试目的需要遍历一个目录下面的所有文件进行操作,主要是读每个文件的内容,只要知道文件名就OK了.在Java中直接用File类就可以搞定,因为Java中使用了组合模式,使得客户端对单个文件和文件 ...

  5. 1.4 File类(文件操作类)获取文件属性,创建和删除文件\目录,遍历目录

    在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成.File 类定义了一些方法来操作文件,如新 ...

  6. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

  7. python 遍历目录或文件

    python 遍历目录或文件 如果想得到某个目录下面的所有文件名,用 python 怎么做? 先看代码: import os,sysdef explore(dir):for root, dirs, f ...

  8. Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  9. Linux(shell)遍历目录删除指定文件,解决文件夹名称带空格问题

    最近打算把一些学习资源解压上传到阿里网盘上,可是在解压的时候出现了问题,无故产生很多隐藏文件(猪哥mac电脑,用的keka解压软件). 且文件夹层级很多,不可能实现手动一个一个文件夹删除,所以就考虑写 ...

  10. os.walk 遍历目录下目录和文件

    python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...

最新文章

  1. GitHub年度报告:中国开源贡献仅次美国、Python成第二热门语言
  2. HDU-3743 Minimum Sum,划分树模板
  3. Openlayers 2.X加载高德地图
  4. 利用My97DatePicker实现年份多选
  5. 两个月计算机考研数学,管综数学考前两个月让你事半功倍的方法
  6. SAP 金额在表中的存储及货币转换因子
  7. 视频会议场景下的弱网优化
  8. LInux命令随笔记
  9. Java8 Striped64 和 LongAdder
  10. java 数据库连接不上_真心求助用java连接数据库时为什么总是连接不上
  11. Object.prototype.toString方法
  12. 为小程序添加底部导航
  13. 基于OCR训练的halcon汉字识别
  14. 苹果 企业 开发者账号 注册、申请续费整个流程($299的账号)
  15. 一个屌丝程序员的青春(二零二)
  16. visio和office安装冲突
  17. IT人转型的终极目标
  18. 关于Junit测试出现Class not found: “ “这个问题如何解决
  19. 《区块链技术原理》笔记
  20. windows聚焦壁纸不更新_Win10系统下聚焦锁屏壁纸无法自动更换怎么解决

热门文章

  1. qt中去除首尾空格的操作simplified()和trimmed()的对比操作
  2. Python:实现greedy knapsack贪婪的背包算法(附完整源码)
  3. win7 无法访问服务器共享文件夹,win7系统共享文件夹无法访问的解决方法
  4. mysql怎么做纵表,本文实例讲述了MySQL横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下:先创建一个成绩表(纵表)create table user_scor...
  5. uipath对SAP的抓取
  6. sap服务器之间文件复制,sap跨服务器客户端复制
  7. 2017 CCPC 秦皇岛 G题
  8. git报错 fatal: unsafe repository 解决方法 xxx is owned by someone else
  9. 将负数转换为整数(绝对值函数)
  10. 【智能算法学习】JAYA算法