读取SD卡下所有文件目录的名字

 1.前言

读取SD卡根目录下文件夹的名字用到FATFS相关的API函数有如下:

 1) f_mount--挂载SD

 2) f_opendir--打开目录

 3) f_readdir--读取目录

 4 ) f_closedir--关闭目录

 2.测试内容

       在SD卡下我们先建立3个文件夹,名字分别命名为beijing chengdu shanghai。通过单片机读出这三个名字发给电脑,在串口显示助手查看读到的文件名,验证读取到的正确性。 

     

                                                                                                       图一

3.测试程序

/*
  char* path: 要扫描的文件路径
  char *buff: 存放读取到的文件夹名字
*/
u16 scan_files (char* path,char *buff)
{
	static FILINFO fno; //文件信息结构体
	fr = f_opendir(&dir, path);  // 打开文件目录    
	if (fr == FR_OK) {//如果打开成功循环读出文件名字到buff中
	for (;;) {  //循环读出文件名字,循环次数等于SD卡根目录下的文件数目
			fr = f_readdir(&dir, &fno); //读取文件名
			if (fr != FR_OK || fno.fname[0] == 0) break;  //读取错误或者读完所有文件结束就跳出循环
			if (fno.fattrib & AM_DIR)//读取的是文件夹名字
			{ 
			    strcpy(buff, fno.fname);	 //复制文件名字到缓存并打印文件名
                            printf("%s\r\n",buff);				
			  }	
		  }
	 f_closedir(&dir);//关闭文件目录
	}
	return fr;// 返回
}
int main (void)
{
   FRESULT fr;  //读文件返回值
   FATFS   fs;  //记录文件盘符结构体
   DIR     dir; //
   char    dirbuff[255];    //存储读到的文件名
   
   fr=f_mount(&fs,"0:",1);//挂载SD卡 挂载成功返回FR_OK,错误返回错误值
   if(fr==FR_OK)  //如果挂载成功扫描文件路径
   {
      scan_files("",dirbuff); //""是sd卡根目录路径
   }
   else
   {
      重新挂载

    }
   while(1)
}

 3.调试说明:

       SD卡根目录下固定有个文件夹名字是 System Volume Information。你在SD卡下建立三个文件夹的话,实际读出4个文件夹,其中第一个读出的文件夹的名字就是System Volume Information。

4.测试结果:

   1)在电脑查看SD卡根目录文件夹。

    在网上下载Winhex软件,以管理员身份运行,打开SD卡盘符,可以看到根目录下的文件夹如下所示:

                                                                                      图二

 

 2) 程序调试窗口输出的结果如下所示。

第一个输出的文件如下所示:

                                          

                                                                                            图三

自己新建的三个文件如下图:

                                             

                                                                                             图四

                                        

                                                                                             图五

                                           

                                                                                      图六

3) 电脑串口助手输出的结果如下所示。

                                  

                                                                                           图七

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值