Skip to content

删除文件或目录

李述铜

520字约2分钟

2024-08-08

提示

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

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

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

本节课时介绍目录或文件删除,标准C库和Linux上相关接口有:

应用场合

在某些情况下,需要删除指定的或者目录,此时需要利用删除接口。FATFS提供了这样的接口。

接口介绍

f_unlink 函数用于从存储卷中删除文件或子目录。以下是该函数的详细说明:

FRESULT f_unlink(
  const TCHAR* path  /* [IN] 文件或子目录的名称 */
);
  • path:要删除的文件或子目录的路径

返回值:

  • FR_OK:操作成功。
  • FR_DISK_ERR:磁盘错误。
  • FR_INT_ERR:发生了内部错误。
  • FR_NOT_READY:文件系统不可用。
  • FR_NO_FILE:文件或目录不存在。
  • FR_NO_PATH:指定路径无效。
  • FR_INVALID_NAME:无效的文件或目录名称。
  • FR_DENIED:操作被拒绝。
  • FR_WRITE_PROTECTED:存储卷处于写保护状态。
  • FR_INVALID_DRIVE:无效的驱动器号。
  • FR_NOT_ENABLED:FatFs模块未启用。
  • FR_NO_FILESYSTEM:没有可用的文件系统。
  • FR_TIMEOUT:操作超时。
  • FR_LOCKED:文件或目录被锁定。
  • FR_NOT_ENOUGH_CORE:内存不足

注意事项

在使用该函数时,需要注意以下几点:

  • 无法删除具有只读属性(AM_RDO)的目录或者文件,只读意味着不能修改(包含删除)。如果仍然调用,则函数返回FR_DENIED,删除失败
  • 无法删除非空目录。非空目录下可能有子文件或者子目录,如果需要删除目录,则需要采用先从最深层 的目录开始,依次往上把所有的文件及父目录删除,最后才能删除最顶层的目录
  • 无法删除当前目录