SDL_IOStream * SDL_IOFromFile(const char *file, const char *mode);
| const char * | file | オープンするファイルの名前のUTF-8文字列 |
| const char * | mode | オープンするモードのASCII文字列 |
SDLが背後でfopen()を使っていない場合でも, Cのライブラリのfopen()のmodeと似た文字列が使用できる.
modeには次の文字列が使える:
注意: バイナリファイルとしてオープンする場合, モード文字列に"b"を追加すること. "b"は文字列の末尾("rb", "wb", "ab", "r+b", "w+b", "a+b"), 文字の間, 文字と+の間("rb+", "wb+", "ab+")のいずれでもよい. これ以外の文字を追加しても効果はない. 例えば, "t"はテキストファイルであることを明確にするために追加されることもある.
この関数はUnicodeのファイル名に対応しているが, オペレーティングシステムに関わらずUTF-8形式の必要がある.
Androidでは, SDL_IOFromFile()はcontent:// URIを使用できる. フォールバックとして, SDL_IOFromFile()は透過的にアプリケーションのassetsの一致するファイルを開く.
SDL_IOStreamをクローズすると, SDLは内部のファイルハンドルをクローズする.
オープンしたとき次のプロパティがSDLによって設定される:
SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER:
win32 HANDLEでキャストできるポインタ. SDL_IOStreamはこれを使ってファイルシステムにアクセスする.
Windowsでない, またはファイルシステムに別の方法でアクセスしている場合, このプロパティはセットされない
SDL_PROP_IOSTREAM_STDIO_FILE_POINTER:
stdio FILE *でキャストできるポインタ. SDL_IOStreamはこれを使ってファイルシステムにアクセスする.
ファイルシステムに別の方法でアクセスしている場合, このプロパティはセットされない.
SDLがアプリケーションとは別のCランタイムを使用している場合, このポインタを使用するとクラッシュするので注意すること.
ほとんどの場合, この問題はWindowsで発生する. これを避けるには自分自身でアプリケーションと同じコンパイラでSDLをビルドすること
SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER:
ファイルシステムへのアクセスに使用するファイルディスクリプタ
SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER:
Android NDK AAsset *でキャストできるポインタ. SDL_IOStreamはこれを使ってファイルシステムにアクセスする.
ファイルシステムに別の方法でアクセスしている場合, このプロパティはセットされない