6.f_lseek
移动一个打开的文件对象的文件读 / 写指针。也可以被用来扩展文件大小 ( 簇预分配 ) 。
FRESULT f_lseek (
FIL* FileObject, /* 文件对象结构指针 */
DWORD Offset /* 文件字节偏移 */
);
参数
FileObject
打开的文件对象的指针
Offset
相对于文件起始处的字节数
返回值
FR_OK (0)
函数成功。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT 文件对象无效。
f_lseek 函数当 FS_MINIMIZE <= 2 时可用。offset 只能被指定为相对于文件起始处的字节数。当在写模式下指定了一个超过文件大小的 offset 时,文件的大小将被扩展,并且该扩展的区域中的数据是未定义的。这适用于为快速写操作迅速地创建一个大的文件。f_lseek 函数成功后,为了确保读 / 写指针已被正确地移动,必须检查文件对象中的成员 fptr 。如果 fptr 不是所期望的值,则发生了下列情况之一。
n
★ 文件结束。指定的 offset 被钳在文件大小,因为文件已被以只读模式打开。
n
★ 磁盘满。卷上没有足够的空闲空间去扩展文件大小。
7.f_truncate
截断文件大小
FRESULT f_truncate (
FIL* FileObject /* 文件对象结构指针 */
);
参数
FileObject
待截断的打开的文件对象的指针。
返回值
FR_OK (0
函数成功。
FR_DENIED
由于文件是以非写模式打开的,而导致该函数被拒绝。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT 文件对象无效。
f_truncate 函数当 _FS_READONLY == 0 并且 _FS_MINIMIZE == 0 时可用。
f_truncate 函数截断文件到当前的文件读 / 写指针。当文件读 / 写指针已经指向文件结束时,该函数不起作用。
8.f_sync
冲洗一个写文件的缓存信息
FRESULT f_sync (
FIL* FileObject /* 文件对象结构的指针 */
);
参数
FileObject
待冲洗的打开的文件对象的指针。
返回值
FR_OK (0)
函数成功。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT 文件对象无效。
f_sync 函数当 _FS_READONLY == 0 时可用。
f_sync 函数和 f_close 函数执行同样的过程,但是文件仍处于打开状态,并且可以继续对文件执行读 / 写 / 移动指针操作。这适用于以写模式长时间打开文件,比如数据记录器。定期的或 f_write 后立即执行 f_sync 可以将由于突然断电或移去磁盘而导致数据丢失的风险最小化。在 f_close 前立即执行 f_sync 没有作用,因为在 f_close 中执行了 f_sync 。换句话说,这两个函数的差异就是文件对象是不是无效的。
9.f_opendir
打开一个目录
FRESULT f_opendir (
DIR* DirObject, /* 空白目录对象结构的指针 */
const XCHAR* DirName /* 目录名的指针 */
); |