Fatfs文件系统创建新文件夹及在该路径下创建文件

时间:2023-01-19 18:29:31
硬件:STM32F103,时钟芯片
编译环境:Keil
问题描述:用到了Fatfs文件系统。通过获取时钟的时间,想每天都创建一个新的文件夹,文件夹名字就是当天的日期(格式:年-月-日)。装置功能中有检测部分,遇到特殊的情况,在当天的文件夹下创建一个.txt文件,该文件的名字是当时时间(格式:时-分-秒.txt)。因为Fatfs利用f_mkdir,f_open分别创建文件夹和文件时,均需要const char*类型的参数;而时间取出来,我已由BCD转为int。
1、怎么将时间转为char类型的。
2、因为f_open是要求绝对路径的,所以需要写明路径,如何处理。(未开启相对路径,因为开启后,有些文件系统操作功能无法用)

举例:比如今天是2016-8-2,时间是6-25-30,如果想创建文件夹,就要写f_mkdir("2016-8-2");
            要创建文件,就得f_open(&ftxt,"/2016-8-2/6-25-30",FA_CREATE_ALWAYS);
但是日期和时间一直都在变化,我想保存到数组里mytime_Date和mytime_Time里,最后就能直接f_mkdir(mytime_Date);f_open(&ftxt,/mytime_Date/mytime_Time,FA_CREATE_ALWAYS)。
请有经验的朋友指导下。


函数原型:FRESULT f_open (
FIL *fp, /* Pointer to the blank file object */
const char *path, /* Pointer to the file name  需要绝对路径*/
BYTE mode /* Access mode and file open mode flags */
)

FRESULT f_mkdir (
const char *path /* Pointer to the directory path */
)

3 个解决方案

#1



sprintf (dir_path,  "/%d-%d-%d",          year, month, day);
sprintf (file_path, "/%d-%d-%d/%d-%d-%d", year, month, day, hour, minute, second);

#2


引用 1 楼 sugar13 的回复:

sprintf (dir_path,  "/%d-%d-%d",          year, month, day);
sprintf (file_path, "/%d-%d-%d/%d-%d-%d", year, month, day, hour, minute, second);

谢谢。

#3


楼主,能不能分享下代码   谢谢..  1114631238@qq.com 

#1



sprintf (dir_path,  "/%d-%d-%d",          year, month, day);
sprintf (file_path, "/%d-%d-%d/%d-%d-%d", year, month, day, hour, minute, second);

#2


引用 1 楼 sugar13 的回复:

sprintf (dir_path,  "/%d-%d-%d",          year, month, day);
sprintf (file_path, "/%d-%d-%d/%d-%d-%d", year, month, day, hour, minute, second);

谢谢。

#3


楼主,能不能分享下代码   谢谢..  1114631238@qq.com