Fatfs f_size()API用法

本文介绍f_size()函数的正确使用步骤:先打开文件,再获取文件大小,最后关闭文件。直接调用f_size()可能无法得到准确的文件大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

f_size()作用是查看文件大小,但在官方文档中没有给出应用实例。

简单测试之后发现f_size()的正确用法如下:

1.f_open()

2.f_size()

3.f_close()

若直接使用f_size()不会得到正确的大小。

Result = f_open(fp,filename,FA_OPEN_ALWAYS | FA_WRITE|FA_READ);
if(Result != 0)
{
    LOG(LOG_ERROR,"ERROR: CreatFile f_open return = %d \r\n",Result);
}
LOG(LOG_INFO,"INFO: size = %d\r\n",(int)f_size(fp));
Result = f_close(fp);
if(Result != 0)
{
    LOG(LOG_ERROR,"ERROR: CreatFile f_close return = %d \r\n",Result);
}




### 关于 `fs_stat` 函数的用法 `fs_stat` 是 FatFs 文件系统的 API 函数之一,用于获取文件状态。此函数可以提供有关指定路径下文件的信息。 #### 函数原型 ```c FRESULT f_stat ( const TCHAR* path, /* 文件/目录路径 */ FILINFO* buf /* 存储文件信息结构体指针 */ ); ``` 该函数接收两个参数: - **path**: 指向字符串的指针,表示要查询的目标文件或目录的路径。 - **buf**: 指向 `FILINFO` 结构体的指针,用来存储返回的文件属性数据[^1]。 #### 返回值说明 如果操作成功,则返回 `FR_OK (0)`;否则会返回错误码来指示具体原因。常见的错误代码包括但不限于: - FR_INVALID_NAME: 路径名非法 - FR_NO_FILE/FOLDER: 找不到目标对象 - FR_DENIED: 访问被拒绝等其他可能发生的异常情况 #### 使用示例 下面是一个简单的例子展示如何调用 `f_stat()` 来读取并打印某个特定文件的状态信息: ```c #include "ff.h" void check_file_status(const char *filename){ FRESULT res; FILINFO fno; res = f_stat(filename,&fno); // 获取文件信息 if(res != FR_OK){ printf("Error occurred while getting file status.\n"); return ; } // 输出文件详情 printf("File name : %s\n", filename); printf("Creation date/time : %.4u/%.2u/%.2u %.2u:%.2u:%.2u\n", ((DWORD)fno.fdate>>9)+1980, (((WORD)fno.fdate<<5)>>10), ((BYTE)(fno.fdate&31)), ((WORD)fno.ftime>>11),(((WORD)fno.ftime>>5)&63),(fno.ftime&31)*2); if(fno.fattrib & AM_DIR){ puts("It's a directory."); }else{ printf("Size of this file is %lu bytes.\n", fno.fsize); } } ``` 通过上述代码片段可以看到,在实际应用中可以通过传递给定路径以及指向适当分配内存空间的 `FILINFO` 类型变量作为输入参数来进行文件信息检索工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值