首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FatFS文件系统 (3)

FatFS文件系统 (3)

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     /*  目录名的指针  */

);
继承事业,薪火相传
返回列表