本文主要是介绍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检测并建立多层目录并更改文件名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!