Skip to content

创建目录

李述铜

490字约2分钟

2024-08-08

提示

同学,你好,欢迎学习本课程!本课程是介绍了FATFS文件系统模块的基本使用,是一门相对较简单的课程。

如果你对文件系统的实现比较感兴趣,也可以关注我的《从0到1写FAT32文件系统》课程。

欢迎转载本文章,转载请注明链接来源,谢谢!

本课时介绍目录创建的接口,Linux创建目录的接口有: https://linux.die.net/man/2/mkdir

应用场合

在某些情况下,我们需要创建目录,此时可以使用f_mkdir()函数完成这荐工作。

注:mkdir简记为make directory。

接口介绍

f_mkdir 函数用于创建新的目录。

FRESULT f_mkdir(
  const TCHAR* path /* [IN] 目录名称 */
);

函数原型

  • path:指向以 null 结尾的字符串,指定要创建的目录名称。

返回值:

  • FR_OK:操作成功。
  • FR_DISK_ERR:磁盘操作错误。
  • FR_INT_ERR:FatFs 内部错误。
  • FR_NOT_READY:物理驱动器未准备好。
  • FR_NO_PATH:无法找到路径。
  • FR_INVALID_NAME:无效的路径或文件名。
  • FR_DENIED:操作被拒绝。
  • FR_EXIST:目录或文件已经存在。
  • FR_WRITE_PROTECTED:磁盘为只读。
  • FR_INVALID_DRIVE:无效的逻辑驱动器。
  • FR_NOT_ENABLED:文件系统未启用。
  • FR_NO_FILESYSTEM:没有文件系统。
  • FR_TIMEOUT:操作超时。
  • FR_NOT_ENOUGH_CORE:内存不足。

描述:如果目录创建成功,它会返回 FR_OK。如果目录已经存在,它会返回 FR_EXIST。

示例

FRESULT res;
res = f_mkdir("sub1");
if (res != FR_OK) {
    // 处理错误
}

res = f_mkdir("sub1/sub2");
if (res != FR_OK) {
    // 处理错误
}

res = f_mkdir("sub1/sub2/sub3");
if (res != FR_OK) {
    // 处理错误
}

注意事项

f_mkdir()不允许创建多层目录。例如,如果dir0或dir1不存在,那么dir2的目录创建将失败。

f_mkdir(_T("0:/dir0/dir1/dir2"));

由些可知,给出一个多级路径后,f_mkdir()并不会逐级解析路径中各个子目录并创建。我们需要自己手动将这些目录创建出来。