f_stat
f_stat函数检查文件或子目录是否存在。
FRESULT f_stat( const TCHAR * path, / * [IN]对象名* / FILINFO * fno / * [OUT] FILINFO结构* / 如果不需要,则设置空指针。 );
描述
该f_stat功能检查文件或子目录的存在。如果不存在,则函数返回FR_NO_FILE。如果存在,该函数将返回FR_OK,并将有关对象,大小,时间戳和属性的信息存储到文件信息结构中。
FRESULT fr; FILINFO fno; printf("Test for 'file.txt'...\n"); fr = f_stat("file.txt", &fno); switch (fr) { case FR_OK: printf("Size: %lu\n", fno.fsize); printf("Timestamp: %u/%02u/%02u, %02u:%02u\n", (fno.fdate >> 9) + 1980, fno.fdate >> 5 & 15, fno.fdate & 31, fno.ftime >> 11, fno.ftime >> 5 & 63); printf("Attributes: %c%c%c%c%c\n", (fno.fattrib & AM_DIR) ? 'D' : '-', (fno.fattrib & AM_RDO) ? 'R' : '-', (fno.fattrib & AM_HID) ? 'H' : '-', (fno.fattrib & AM_SYS) ? 'S' : '-', (fno.fattrib & AM_ARC) ? 'A' : '-'); break; case FR_NO_FILE: printf("It is not exist.\n"); break; default: printf("An error occured. (%d)\n", fr); }
f_unlink
f_unlink函数从卷中删除文件或子目录。
FRESULT f_unlink( const TCHAR *path / * [IN]对象名* / );
描述
如果要移除的对象的条件适用于以下条款,则该功能将被拒绝。
- 文件/子目录不能具有只读属性(AM_RDO),否则该函数将被FR_DENIED拒绝。
- 子目录必须为空,并且不能为当前目录,否则该函数将被FR_DENIED拒绝。
- 不能打开文件/子目录,否则FAT卷可以折叠。启用文件锁定功能后,它将被安全拒绝。
f_rename
f_rename函数重命名和/或移动文件或子目录。
FRESULT f_rename(
const TCHAR * old_name,/ * [IN]旧对象名* /
const TCHAR * new_name / * [IN]新对象名* /
);
描述
重命名文件或子目录,也可以将其移动到同一卷中的其他目录。要重命名的对象不能是打开的对象,否则FAT卷可以折叠。启用文件锁定功能后,可以安全拒绝此类错误操作。
/ *重命名默认驱动器中的对象* /
f_rename(“ oldname.txt”,“ newname.txt”);
/ *重命名驱动器2中的对象* /
f_rename(“ 2:oldname.txt”,“ newname.txt”);
/ *重命名对象并将其移动到驱动器中的另一个目录* /
f_rename(“ log.txt”,“ old / log0001.txt”);
f_chmod
f_chmod函数更改文件或子目录的属性。
FRESULT f_chmod(
const TCHAR * path,/ * [IN]对象名* /
BYTE attr, / * [IN]属性标志* /
BYTE mask / * [IN]属性掩码* /
);
/ *设置为只读,清除存档,其他保持不变。* /
f_chmod(“ file.txt”,AM_RDO,AM_RDO | AM_ARC);
f_utime
f_utime函数更改文件或子目录的时间戳。
FRESULT f_utime(
const TCHAR * path, / * [IN]对象名* /
const FILINFO * fno / * [IN]要设置的时间和数据* /
);
FRESULT set_timestamp ( char *obj, /* Pointer to the file name */ int year, int month, int mday, int hour, int min, int sec ) { FILINFO fno; fno.fdate = (WORD)(((year - 1980) * 512U) | month * 32U | mday); fno.ftime = (WORD)(hour * 2048U | min * 32U | sec / 2U); return f_utime(obj, &fno); }
f_mkdir
f_mkdir函数创建一个新目录。
FRESULT f_mkdir(
const TCHAR *path/ * [IN]目录名* /
);
res = f_mkdir("sub1"); if (res) die(res); res = f_mkdir("sub1/sub2"); if (res) die(res); res = f_mkdir("sub1/sub2/sub3"); if (res) die(res);
f_chdir
该f_chdir功能改变了逻辑驱动器的当前目录。
FRESULT f_chdir(
const TCHAR *path/ * [IN]路径名* /
);
描述
该f_chdir功能改变了逻辑驱动器的当前目录。此外,当Unix样式卷ID,当前的驱动器将被改变FF_STR_VOLUME_ID == 2,被选中。每个逻辑驱动器的当前目录被初始化为安装时的根目录。
请注意,当前目录保留在每个文件系统对象中,而当前驱动器保留在静态变量中,因此它也影响使用文件功能的其他任务。
/ *更改当前驱动器的当前目录(根目录下的“ dir1”)* /
f_chdir(“ / dir1”);
/ *更改当前驱动器的当前目录(驱动器2的父目录)* /
f_chdir(“ 2:..”);
/ *更改驱动器“ sdcard”的当前目录(以DOS / Windows风格的卷ID)* /
f_chdir(“ sdcard:/ dir1”);
/ *更改驱动器“ flash”的当前目录并将其设置为当前驱动器(以Unix风格的卷ID)* /
f_chdir(“ / flash / dir1”);
f_chdrive
f_chdrive函数更改当前驱动器。
FRESULT f_chdrive( const TCHAR *path/ * [IN]逻辑驱动器号* / 指定要设置为当前驱动器的逻辑驱动器号。 );
描述
该f_chdrive功能仅更改当前驱动器。当前驱动器号的初始值为0。请注意,当前驱动器保留在静态变量中,因此它也影响使用文件功能的其他任务。
f_chdrive(“ 2:”); / *将驱动器2设置为当前驱动器* /
f_chdrive(“”); / *无作用(将当前驱动器设置为当前驱动器)* /
f_chdrive(“ / flash”); / *将驱动器“flash”设置为当前驱动器(以Unix样式的卷ID)* /
f_getcwd
f_getcwd函数检索当前驱动器的当前目录。
FRESULT f_getcwd(
TCHAR * buff,/ * [OUT]返回路径名的缓冲区* /
UINT len / * [IN]缓冲区的长度* /
);
描述
该f_getcwd函数检索当前驱动器的当前目录的全路径名。当FF_VOLUMES > = 2时,会将标题驱动器前缀添加到路径名。驱动器前缀的样式取决于FF_STR_VOLUME_ID。
注意:在此修订版中,此功能无法检索exFAT卷上的当前目录路径。它总是返回根目录路径。
FRESULT fr;
TCHAR str [SZ_STR];
fr = f_getcwd(str,SZ_STR); / *获取当前目录路径* /