FatFs检测并建立多层目录并更改文件名

2024-03-03 01:32

本文主要是介绍FatFs检测并建立多层目录并更改文件名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FatFs检测文件路径是否存在,不存在就建立多层目录,最后更改文件名

if(W_Dresult==FR_OK) 
{														wifi_dp_wav_file_status=0;start_downloading=0;/*************************************遍历创建文件夹*************************************************************/u8 opendir_err = 0;   //错误提示char SonPath[10][50]; //最多10层,每层最多50字符char RootPath[200];   //最低已存在路径memset(SonPath, '\0', sizeof(SonPath)); //初始化memcpy(RootPath, DownFileName, sizeof(DownFileName));u8 num = 0;           // 剔除的次数do                      //遍历寻找文件夹{char *dot = strrchr(RootPath, '\\');   //剔除一层memcpy(SonPath[num], dot, &RootPath[strlen(RootPath)] - dot);  //保存子目录for(int i=0;i<dot-RootPath;i++) RootPath[dot-RootPath+i] = '\0';W_Dresult = f_opendir(&W_Ddir, RootPath); //检测文件夹if(W_Dresult == FR_OK){printf(">> 文件夹存在[%s]\r\n",RootPath);break;}else{printf(">> 文件夹打开错误 - %d [%s]\r\n",W_Dresult, RootPath);if(W_Dresult == FR_NO_PATH){opendir_err = 1;num ++;continue;}}}while(1);if(opendir_err == 1){//遍历创建文件夹opendir_err = 0;for(int i=0;i<num;i++){memcpy(&RootPath[strlen(RootPath)], SonPath[num-i], strlen(SonPath[num-i]));W_Dresult = f_mkdir(RootPath);if(W_Dresult == FR_OK) { printf(">> 创建文件夹成功[%s]\r\n", RootPath); }else printf(">> 创建文件夹失败 - %d [%s]\r\n",W_Dresult, RootPath);}}
/****************************************************************************************/		W_Dresult = f_rename(recfilename,DownFileName);  //更改临时的文件名printf(">> 云端文件名:%s\r\n",DownFileName);if(W_Dresult == FR_OK) printf(">> 更改文件名成功 - %s\r\n",DownFileName);else printf(">> 更改文件名失败 - %d\r\n",W_Dresult);if(W_Dresult == FR_EXIST){printf(">> 文件已存在,删除旧文件\r\n");W_Dresult = f_unlink(DownFileName);  //删除旧文件if(W_Dresult == FR_OK) {W_Dresult = f_rename(recfilename,DownFileName);  //更改临时的文件名if(W_Dresult == FR_OK) printf(">> 再次更改文件名成功 - %s\r\n",DownFileName);else printf(">> 再次更改文件名失败 - %d\r\n",W_Dresult);}else printf(">> 再次更改文件名失败 - %d\r\n",W_Dresult);}return;
}

 

这篇关于FatFs检测并建立多层目录并更改文件名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768038

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee