D-BOY 发表于 2017-12-11 15:22:53

FATFS创建文件夹时如何添加“创建时间”?

如题!
通过实现get_fattime函数,创建文件时是可以添加“创建时间”的,但是创建文件夹时却不能,请各位帮忙,谢谢!
另外,f_utime添加的是“修改时间”

D-BOY 发表于 2017-12-11 16:36:52

本帖最后由 D-BOY 于 2017-12-11 16:37 编辑

多谢版主,问题解决!
f_mkdir内部使用的是ST_DWORD(dir + DIR_WrtTime, tm);      /* Created time */
实际上DIR_WrtTime是“修改时间”,添加“创建时间”应将DIR_WrtTime改为DIR_CrtTime。效果如图

发表于 2017-12-11 15:37:39

这个函数需要自己写,如下说明:
http://elm-chan.org/fsw/ff/doc/fattime.html

D-BOY 发表于 2017-12-11 15:39:10

安 发表于 2017-12-11 15:37
这个函数需要自己写,如下说明:
http://elm-chan.org/fsw/ff/doc/fattime.html

谢谢,这个函数我自己写过了,现在的问题是文件夹无法添加“创建时间”,而文件却可以

发表于 2017-12-11 15:45:19

我看代码里面有,楼主看一下创建文件夹的代码有没有:
if (res == FR_OK) res = dir_register(&dj);        /* Register the object to the directoy */
                        if (res != FR_OK) {
                                remove_chain(dj.fs, dcl);                        /* Could not register, remove cluster chain */
                        } else {
                                dir = dj.dir;
                                dir = AM_DIR;                                /* Attribute */
                                ST_DWORD(dir + DIR_WrtTime, tm);        /* Created time */
                                st_clust(dir, dcl);                                        /* Table start cluster */
                                dj.fs->wflag = 1;
                                res = sync_fs(dj.fs);

D-BOY 发表于 2017-12-11 16:08:15

安 发表于 2017-12-11 15:45
我看代码里面有,楼主看一下创建文件夹的代码有没有:
if (res == FR_OK) res = dir_register(&dj);        /* Reg ...

多谢!f_mkdir里面是有这段代码的,但文件夹还是没有“创建时间”实际情况参考附件图片

ccxzjz 发表于 2019-9-5 15:22:07

老铁,怎么获取文件的创建时间,f_stat()函数获取的是最近修改的时间
页: [1]
查看完整版本: FATFS创建文件夹时如何添加“创建时间”?