外观
获取文件信息
提示
同学,你好,欢迎学习本课程!本课程是介绍了FATFS文件系统模块的基本使用,是一门相对较简单的课程。
如果你对文件系统的实现比较感兴趣,也可以关注我的《从0到1写FAT32文件系统》课程。
欢迎转载本文章,转载请注明链接来源,谢谢!
FATFS提供了获取文件大小和当前位置等信息的接口。C语言中相关接口请见:
获取当前位置f_tell
如果要获取当前文件读写的位置,可以使用f_tell()函数。该函数接受一个指向打开文件对象的指针 fp
作为参数,并返回文件的当前读/写指针位置。
# 获取文件的当前读/写指针位置
FSIZE_t f_tell(
FIL* fp # [IN] 文件对象指针
)
该函数返回当前的读写位置,其值为相对于文件开头的字节偏移量。
获取文件大小f_size
如果想要获取文件大小,可以使用f_size()函数。。该函数接受一个指向打开文件对象的指针 fp
作为参数,并返回文件的大小。
FSIZE_t f_size (
FIL* fp /* [输入] 文件对象 */
);
该函数返回以字节为单位的文件大小。
判断是否到达文件尾部f_eof
在对文件操作的过程中,有时候可能想判断是否已经到达文件的尾部。此时可以使用f_eof()函数来实现。该函数接受一个指向打开文件对象的指针 fp
作为参数。
# 测试文件是否已到达文件末尾
int f_eof(
FIL* fp # [IN] 文件对象指针
)
如果当前读写位置是在文件尾部,则返回非0值;否则,返回0值。
检查文件上一次操作是否发生错误
如果想检查上一次调用文件相关的接口之后,文件操作是否发生了错误,则可以使用f_error
函数。其函数原型如下:
int f_error (
FIL* fp /* [IN] 文件对象指针 */
);
函数参数
fp
:指向已打开文件对象的指针。
返回值:
- 如果发生严重错误,则返回一个非零值(其中保存了具体错误的原因);否则返回零。
注意事项
f_error的必要性
很多时候,由于f_read()等函数直接将操作的错误结果返回,因此可以立即取得执行的结果。f_error()就显得没有必要去使用。
但是在某些情况下,调用f_read()时其错误结果不会立即使用,或者这个结果需要被缓存。为了简化起见,可以直接使用f_error(),因为f_read()等函数内部实际会将操作结果保存在FIL结构内部,而f_error()就是直接取出这个缓存的结果。