/****************************************************************************** ** 函数名称: RemoveFile ** 功能描述: 删除文件 ** ** 输 入: DirFileName:用户使用的文件名 ** ** 输 出: RETURN_OK:成功 ** 其它参考fat.h中关于返回值的说明 ** 全局变量: 无 ** 调用模块: _GetFDTInfo,FindFDTInfo,FATDelClusChain,DelFDT ** *****************************************************************************/ Uint8 RemoveFile(Int8 *DirFileName) { Uint32 ClusIndex, ClusIndex1; Uint8 Rt; Int8 DirName[12]; FDT temp; DirFileName = FsStrCopy(DirFileName); ClusIndex = _GetFDTInfo(DirName, DirFileName); Rt = PATH_NOT_FIND; if (ClusIndex != BAD_CLUS) { Rt = FindFDTInfo(&temp, ClusIndex, DirName); if (Rt == RETURN_OK) { Rt = NOT_FIND_FILE; if ((temp.Attr & ATTR_DIRECTORY) == 0) /* 是文件才删除 */ { Rt = FILE_LOCK; if (FindOpenFile(ClusIndex, DirName, FILE_FLAGS_READ|FILE_FLAGS_WRITE) == Not_Open_FILE) { /* 文件没有打开才删除 */ ClusIndex1 = temp.FstClusLO + ((Uint32)temp.FstClusHI << 16); FATDelClusChain(ClusIndex1); Rt = DelFDT(ClusIndex, DirName); } } } } return Rt; }
/********************************************************************************************************* ** 函数名称: RemoveDir ** 功能描述: 删除目录 ** ** 输 入: Path:路径名 ** ** 输 出: RETURN_OK:成功 ** 其它参考fat.h中关于返回值的说明 ** 全局变量: 无 ** 调用模块: strupr,DelFDT ********************************************************************************************************/ acoral_u8 RemoveDir(acoral_char *Path) { acoral_u32 ClusIndex, ClusIndex1; acoral_u8 Drive, Rt; acoral_char DirName[12]; FDT temp; strupr(Path); /* 变为大写 */ ClusIndex = _GetFDTInfo(DirName, Path); if (ClusIndex == BAD_CLUS) { return PATH_NOT_FIND; } Drive = GetDrive(Path); /* 获取FDT其信息 */ Rt = FindFDTInfo(&temp, Drive, ClusIndex, DirName); if (Rt == RETURN_OK) { /* 是否是目录 */ if ((temp.Attr & ATTR_DIRECTORY) != 0) { /* 是 */ ClusIndex1 = temp.FstClusLO + ((acoral_u32)(temp.FstClusHI) << 16); /* 是否是空目录 */ Rt = DirIsEmpty(Drive, ClusIndex1); if (Rt == DIR_EMPTY) { /* 是,删除 */ FATDelClusChain(Drive, ClusIndex1); Rt = DelFDT(Drive, ClusIndex, DirName); } } else { return PATH_NOT_FIND; } } return Rt; }