SDL_RWops* SDL_RWFromFile(const char* file, const char* mode)
file | 開くファイルのUTF-8文字列の名前 |
mode | ファイルを開くモードを表すASCII文字列 (詳細を参照すること) |
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が内部に持っているファイルハンドラも閉じる.