ファイルをオープンまたは作成します。
FRESULT f_open ( FIL* FileObject, /* 空のファイル・オブジェクト構造体へのポインタ */ const char* FileName, /* ファイルのフルパス名へのポインタ */ BYTE ModeFlags /* モードフラグ */ );
| 値 | 意味 | 
|---|---|
| FA_READ | 読み出しモードで開きます。読み書きする場合はFA_WRITEと共に指定します。 | 
| FA_WRITE | 書き込みモードで開きます。読み書きする場合はFA_READと共に指定します。 | 
| FA_OPEN_EXISTING | 既存のファイルを開きます。ファイルが無いときはエラーになります。(デフォルト) | 
| FA_OPEN_ALWAYS | 既存のファイルを開きます。ファイルが無いときはファイルを作成します。 | 
| FA_CREATE_NEW | ファイルを作成します。同名のファイルがある場合は、エラーになります。 | 
| FA_CREATE_ALWAYS | ファイルを作成します。同名のファイルがある場合は、サイズを0にしてから開きます。 | 
作成されたファイル・オブジェクトは、以降そのファイルに対するアクセスに使用します。ファイルを閉じるときは、f_close()を使用します。
ファイル操作関数を使用する前にまず、f_mount()を使ってそれぞれの論理ドライブにワーク・エリア(ファイル・システム・オブジェクト)を与えなければなりません。この初期化の後、その論理ドライブに対して全てのファイル関数が使えるようになります。
リードオンリー構成では、FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYSの各フラグはサポートされません。
void main ()
{
    FATFS fs;            // 論理ドライブのワーク・エリア(ファイル・システム・オブジェクト)
    FIL fsrc, fdst;      // ファイル・オブジェクト
    BYTE buffer[4096];   // file copy buffer
    FRESULT res;         // FatFs function common result code
    UINT br, bw;         // File R/W count
    // ドライブ0のワーク・エリアを与える
    f_mount(0, &fs);
    // ソース・ファイルを開く
    res = f_open(&fsrc, "srcfile.dat", FA_OPEN_EXISTING | FA_READ);
    if (res) die(res);
    // デスティネーション・ファイルを作成する
    res = f_open(&fdst, "dstfile.dat", FA_CREATE_ALWAYS | FA_WRITE);
    if (res) die(res);
    // ソースからデスティネーションにコピーする
    for (;;) {
        res = f_read(&fsrc, buffer, sizeof(buffer), &br);
        if (res || br == 0) break;   // error or eof
        res = f_write(&fdst, buffer, br, &bw);
        if (res || bw < br) break;   // error or disk full
    }
    // 全てのファイルを閉じる
    f_close(&fsrc);
    f_close(&fdst);
    // ワーク・エリアを開放する
    f_mount(0, NULL);
}