ファイルをオープンまたは作成します。
FRESULT f_open ( FIL* FileObject, // 作成するファイルオブジェクト構造体へのポインタ const char* FileName, // ファイルのフルパス名へのポインタ BYTE ModeFlags // モードフラグ );
| 値 | 意味 | 
|---|---|
| FA_READ | 読み出しモードでオープンします。読み書きする場合はFA_WRITEと共に指定します。 | 
| FA_WRITE | 書き込みモードでオープンします。読み書きする場合はFA_READと共に指定します。 | 
| FA_OPEN_EXISTING | 既存のファイルを開きます。ファイルが無いときはエラーになります。 | 
| FA_CREATE_ALWAYS | ファイルを作成します。既存のファイルがある場合は、サイズを0にしてから開きます。 | 
| FA_OPEN_ALWAYS | 既存のファイルを開きます。ファイルが無いときはファイルを作成します。 | 
FatFsモジュールの使用を開始するにはまず、FatFsモジュールにワークエリア(構造体FATFS)を割り当てます。確保したワークエリアを0で初期化したあと、FatFsモジュールのグローバル変数FatFsにそのアドレスを代入するだけでモジュールは動作可能状態になり、ファイル関数が使えるようになります。
リードオンリー構成では、FA_WRITE, FA_CREATE_ALWAYS, FA_OPEN_ALWAYSの各フラグはサポートされません。
void main ()
{
    FATFS fs;            // FatFsワークエリア
    FIL fsrc, fdst;      // ファイルオブジェクト
    BYTE buffer[4096];   // file copy buffer
    FRESULT res;         // FatFs function common result code
    WORD br, bw;         // File R/W count
    // FatFsのワークエリアを確保する
    memset(&fs, 0, sizeof(FATFS));
    FatFs = &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;
        res = f_write(&fdst, buffer, br, &bw);
        if (res || bw < br) break;
    }
    // 全てのファイルを閉じる
    f_close(&fsrc);
    f_close(&fdst);
    // FatFsのワークエリアを開放する
    FatFs = NULL;
}