跳转至

f_open

f_open

f_open 函数用于打开一个文件。

FRESULT f_open (
  FIL* fp,           /* [输出] 指向文件对象的指针 */
  const TCHAR* path, /* [输入] 文件名 */
  BYTE mode          /* [输入] 模式标志 */
);

参数

  • fp 指向一个空白文件对象结构的指针。如果传入空指针,函数将失败并返回 FR_INVALID_OBJECT

  • path 指向一个以 null 结尾的字符串,该字符串指定了要打开或创建的文件名

  • mode 模式标志,指定文件的访问类型和打开方法。

标志 含义
FA_READ 指定对文件的读访问。
FA_WRITE 指定对文件的写访问。
FA_OPEN_EXISTING 打开文件。如果文件不存在,函数将失败。(默认)
FA_CREATE_ALWAYS 创建一个新文件。如果文件已存在,则截断并覆盖。
FA_CREATE_NEW 创建一个新文件。如果文件已存在,函数将失败。
FA_OPEN_ALWAYS 打开文件。如果文件不存在,则创建一个新文件。
FA_OPEN_APPEND FA_OPEN_ALWAYS 相同,只是读/写指针被设置在文件的末尾。

返回值

FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_FILE, FR_NO_PATH, FR_INVALID_NAME, FR_DENIED, FR_EXIST, FR_INVALID_OBJECT, FR_WRITE_PROTECTED, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_LOCKED, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES

描述

f_open 函数打开一个文件并创建一个文件对象。该对象是后续对文件进行读/写操作的标识符。文件访问会话结束后,应使用 f_close 函数关闭已打开的文件。

示例

/* 读取一个文本文件并显示它 */

FATFS FatFs;   /* 逻辑驱动器的工作区 (文件系统对象) */

int main (void)
{
    FIL fil;        /* 文件对象 */
    char line[100]; /* 行缓冲区 */
    FRESULT fr;     /* FatFs 返回码 */


    /* 为默认驱动器提供一个工作区 */
    f_mount(&FatFs, "", 0);

    /* 打开一个文本文件 */
    fr = f_open(&fil, "message.txt", FA_READ);
    if (fr) return (int)fr;

    /* 逐行读取并显示 */
    while (f_gets(line, sizeof line, &fil)) {
        printf(line);
    }

    /* 关闭文件 */
    f_close(&fil);

    return 0;
}

相关参考

f_read, f_write, f_close, FIL, FATFS