如果函数成功,则创建一个文件对象。该文件对象被后续的读 / 写函数用来访问文件。如果想要关闭一个打开的文件对象,则使用 f_close 函数。如果不关闭修改后的文件,那么文件可能会崩溃。在使用任何文件函数之前,必须使用 f_mount 函数为驱动器注册一个工作区。只有这样,其他文件函数才能正常工作。
3.f_close
关闭一个打开的文件
FRESULT f_close (
FIL* FileObject /* 文件对象结构的指针 */
);
参数
FileObject
指向将被关闭的已打开的文件对象结构的指针。
返回值
FR_OK (0)
文件对象已被成功关闭。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT
文件对象无效。
f_close 函数关闭一个打开的文件对象。无论向文件写入任何数据,文件的缓存信息都将被写回到磁盘。该函数成功后,文件对象不再有效,并且可以被丢弃。如果文件对象是在只读模式下打开的,不需要使用该函数,也能被丢弃。
4.f_read
从一个文件读取数据
FRESULT f_read (
FIL* FileObject, /* 文件对象结构的指针 */
void* Buffer, /* 存储读取数据的缓冲区的指针 */
UINT ByteToRead, /* 要读取的字节数 */
UINT* ByteRead /* 返回已读取字节数变量的指针 */
);
参数
FileObject
指向将被读取的已打开的文件对象结构的指针。
Buffer
指向存储读取数据的缓冲区的指针。
ByteToRead
要读取的字节数, UINT 范围内。
ByteRead
指向返回已读取字节数的 UINT 变量的指针。在调用该函数后,无论结果如何,数值都是有效的。
返回值
FR_OK (0)
函数成功。
FR_DENIED
由于文件是以非读模式打开的,而导致该函数被拒绝。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT 文件对象无效。
文件对象中的读 / 写指针以已读取字节数增加。该函数成功后,应该检查 *ByteRead 来检测文件是否结束。在读操作过程中,一旦 *ByteRead < ByteToRead ,则读 / 写指针到达了文件结束位置。
5.f_write
写入数据到一个文件
FRESULT f_write (
FIL* FileObject, /* 文件对象结构的指针 */
const void* Buffer, /* 存储写入数据的缓冲区的指针 */
UINT ByteToWrite, /* 要写入的字节数 */
UINT* ByteWritten /* 返回已写入字节数变量的指针 */
);
参数
FileObject
指向将被写入的已打开的文件对象结构的指针。
Buffer
指向存储写入数据的缓冲区的指针。
ByteToRead
要写入的字节数, UINT 范围内。
ByteRead
指向返回已写入字节数的 UINT 变量的指针。在调用该函数后,无论结果如何,数值都是有效的。
返回值
FR_OK (0)
函数成功。
FR_DENIED
由于文件是以非写模式打开的,而导致该函数被拒绝。
FR_DISK_ERR
由于底层磁盘 I/O 函数中的错误,而导致该函数失败。
FR_INT_ERR
由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。
FR_NOT_READY
由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。
FR_INVALID_OBJECT 文件对象无效。
文件对象中的读 / 写指针以已写入字节数增加。该函数成功后,应该检查 *ByteWritten 来检测磁盘是否已满。在写操作过程中,一旦 *ByteWritten < *ByteToWritten ,则意味着该卷已满。 |