目次 - API(機能別) - ファイル入出力 - SDL_RWFromFile

# SDL_RWFromFile

指定の名前のファイルの読込と書込を行うSDL_RWopsを生成する

## 構文

`SDL_RWops* SDL_RWFromFile(const char* file, const char* mode)`

## 引数

file | 開くファイルのUTF-8文字列の名前
mode | ファイルを開くモードを表すASCII文字列 (詳細を参照すること)

## 戻り値

生成したSDL_RWopsへのポインタを戻す. 失敗のときNULLを戻す. SDL_GetError()で詳細を知ることができる.

## サンプルコード

``

    SDL_RWops *file = SDL_RWFromFile("myimage.bmp", "rb");
    SDL_Surface *image = SDL_LoadBMP_RW(file, 1); /* 1のとき自動的にSDL_RWopsを閉じる */
    /* ここでimageを処理する */

## 詳細

仮にSDLが背後でfopen()を使っていないとしても, mode文字列はCのライブラリのfopen()とほぼ同じである.

利用できるmode文字列:

r | 読み込むためにファイルを開く. ファイルが存在している必要がある
w | 書き込むために空のファイルを作成する. もし既に同じ名前のファイルが存在すれば, その内容は削除され, 新しい空のファイルとして扱われる
a | ファイルに追加する. 書込操作はファイルの末尾に追加する. ファイルが存在しなければ作成される.
r+ | ファイルを読込と書込の両方のために開く. ファイルが存在している必要がある
w+ | 読込と書込の両方のために空のファイルを生成する. もし既に同じ名前のファイルが存在すれば, その内容は削除され, 新しい空のファイルとして扱われる
a+ | 読込と追加のためにファイルを開く. 書込操作はファイルの末尾に追加され, それ以前の内容は上書きされない. ファイルの読込位置はどこへでも変えられるが, 書込操作を行うとファイルの末尾に戻る. ファイルが存在しなければ作成される.

メモ: バイナリファイルとして開く場合は, "b"をmodeに加える必要がある. "b"を文字列の末尾("rb", "wb", "ab", "r+b", "w+b", "a+b")か文字と"+"の間("rb+", "wb+", "ab+")に追加する. 無効となるが, その後に文字を追加することがある. 例えば, テキストファイルであることを明記するために"t"をつけることもできる.

この関数はUnicodeのファイル名に対応しているが, OSに関わらずUTF-8形式でエンコードされている必要がある.

Androidでは, 代替としてSDL_RWFromFile()はassetsディレクトリの一致するファイル名のファイルを透過的に開く.

SDL_RWopsを閉じるとSDLが内部に持っているファイルハンドラも閉じる.

## 関連項目(関数)

SDL_RWclose
SDL_RWFromConstMem
SDL_RWFromFP
SDL_RWFromMem
SDL_RWread
SDL_RWseek
SDL_RWtell
SDL_RWwrite

## SDL Wikiへのリンク

SDL_RWFromFile - SDL Wiki