硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2447|回复: 7
收起左侧

[RL-FlashFS] 计算目录下文件数目

[复制链接]

6

主题

9

回帖

27

积分

新手上路

积分
27
发表于 2020-6-30 14:23:27 | 显示全部楼层 |阅读模式
利用的RL-FlashFS,使用的是TF卡,想开机时统计文件数目,请教版主和各位大神。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-6-30 16:17:15 | 显示全部楼层
含文件夹里面的子文件吗
回复

使用道具 举报

6

主题

9

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2020-7-1 09:03:11 | 显示全部楼层
eric2013 发表于 2020-6-30 16:17
含文件夹里面的子文件吗

不含,都是是一级目录下,没有文件夹;暂时没有找到专用函数呢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-7-1 09:47:32 | 显示全部楼层
ych20072007 发表于 2020-7-1 09:03
不含,都是是一级目录下,没有文件夹;暂时没有找到专用函数呢。
  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: ViewRootDir
  4. *        功能说明: 显示NAND Flash目录下的文件名
  5. *        形    参: 无
  6. *        返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void ViewRootDir(void)
  10. {
  11.         uint8_t result;
  12.         FINFO info;
  13.         uint64_t ullNANDCapacity;
  14.         uint8_t buf[15];
  15.        
  16.     info.fileID = 0;                /* 每次使用ffind函数前,info.fileID必须初始化为0 */

  17.         /* 加载NAND Flash */
  18.         result = finit("N0:");
  19.         if(result != NULL)
  20.         {
  21.                 /* 如果挂载失败,务必不要再调用FlashFS的其它API函数,防止进入硬件异常 */
  22.                 printf("挂载文件系统失败 (%s)\r\n", ReVal_Table[result]);
  23.                 goto access_fail;
  24.         }
  25.         else
  26.         {
  27.                 printf("挂载文件系统成功 (%s)\r\n", ReVal_Table[result]);
  28.         }
  29.         printf("------------------------------------------------------------------\r\n");
  30.         printf("文件名                 |  文件大小     | 文件ID  | 属性      |日期\r\n");
  31.        
  32.         /*
  33.            将根目录下的所有文件列出来。
  34.            1. "*" 或者 "*.*" 搜索指定路径下的所有文件
  35.            2. "abc*"         搜索指定路径下以abc开头的所有文件
  36.            3. "*.jpg"        搜索指定路径下以.jpg结尾的所有文件
  37.            4. "abc*.jpg"     搜索指定路径下以abc开头和.jpg结尾的所有文件
  38.        
  39.            以下是实现搜索根目录下所有文件
  40.         */
  41.         while(ffind ("N0:*.*", &info) == 0)  
  42.         {
  43.                 /* 调整文件显示大小格式 */
  44.                 DotFormat(info.size, (char *)buf);
  45.                
  46.                 /* 打印根目录下的所有文件 */
  47.                 printf ("%-20s %12s bytes, ID: %04d  ",
  48.                                 info.name,
  49.                                 buf,
  50.                                 info.fileID);
  51.                
  52.                 /* 判断是文件还是子目录 */
  53.                 if (info.attrib & ATTR_DIRECTORY)
  54.                 {
  55.                         printf("(0x%02x)目录", info.attrib);
  56.                 }
  57.                 else
  58.                 {
  59.                         printf("(0x%02x)文件", info.attrib);
  60.                 }
  61.                
  62.                 /* 显示文件日期 */
  63.                 printf ("  %04d.%02d.%02d  %02d:%02d\r\n",
  64.                  info.time.year, info.time.mon, info.time.day,
  65.                info.time.hr, info.time.min);
  66.     }
  67.        
  68.         if (info.fileID == 0)  
  69.         {
  70.                 printf ("NAND Flash中没有存放文件\r\n");
  71.         }
  72.        
  73.         /* 获取NAND Flash剩余容量 */
  74.         ullNANDCapacity = ffree("N0:");
  75.         DotFormat(ullNANDCapacity, (char *)buf);
  76.         printf("NAND FLASH的容量 = %10s字节\r\n", buf);

  77. access_fail:
  78.         /* 卸载NAND Flash */
  79.         result = funinit("N0:");
  80.         if(result != NULL)
  81.         {
  82.                 printf("卸载文件系统失败\r\n");
  83.         }
  84.         else
  85.         {
  86.                 printf("卸载文件系统成功\r\n");
  87.         }
  88.        
  89.         printf("------------------------------------------------------------------\r\n");
  90. }
复制代码
回复

使用道具 举报

6

主题

9

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2020-7-1 09:50:49 | 显示全部楼层

fileID这个不是文件数目吧,这个ffind一次找到的文件数目有限吧,几百或者上千;我这面测试ffind只能找到一个文件。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-7-1 10:40:19 | 显示全部楼层
ych20072007 发表于 2020-7-1 09:50
fileID这个不是文件数目吧,这个ffind一次找到的文件数目有限吧,几百或者上千;我这面测试ffind只能找到 ...

没有限制,一直用的这个。
回复

使用道具 举报

6

主题

9

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2020-7-1 13:30:12 | 显示全部楼层
eric2013 发表于 2020-7-1 10:40
没有限制,一直用的这个。

一次只能查找到一个文件吧,要一个个遍历一遍,才能只能最终文件数目吧?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-7-1 13:46:22 | 显示全部楼层
ych20072007 发表于 2020-7-1 13:30
一次只能查找到一个文件吧,要一个个遍历一遍,才能只能最终文件数目吧?

对,常用的这些文件系统都是这样。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 13:27 , Processed in 0.274867 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表