前のページ次のページ上に戻るホーム SophiaFramework 2.1

6.4. ファイル ストリーム

SFUFileStream は、ファイルに対する入出力を実装しています。 ストリーム バッファとして内部で SFUFileBuffer を使用しています。

ここではファイルからデータを読み取るサンプル コードを使って説明します。

[Tip] Tip

BREW のファイル機能を使用するときは、 MIF ファイルの設定で、アプレットの [File] 特権レベル を有効にする必要があります。

Void TestFile() {
    SFUFileStream fstr;
    fstr.Open("test.txt", _OFM_READ);
    if (fstr.Exception() != NO_ERROR) {
        TRACE("Cannot open");
        return;
    }
    
    TRACE("available %d", fstr.Available());
    while (! fstr.IsEOS()) {
        UInt08 ch;
        fstr >> ch;
        TRACE("%c", ch);
    }
    
    TRACE("REWIND!");
    fstr >> seek(0);
    fstr >> offset(2);
    
    while (! fstr.IsEOS()) {
        UInt08 ch;
        fstr >> ch;
        TRACE("%c", ch);
    }
}

ファイルをオープンするためには、 Open() 関数を使用し、ファイル名とオープン モードを指定します。 ファイルがオープンできない場合、 Exception() 関数は NO_ERROR 以外の値を返します。 ここでは、BREW モジュールと同ディレクトリに存在する test.txt というファイルをオープンしています。

Available() 関数は、ストリームの現在位置から数えて、 どれぐらいのデータが存在するかを返します。 データが存在しない場合、IsEOF() が TRUE になります。

データはエクストラクタによりさまざまなデータ型で取得できます。 ここでは UInt08 型として 1 文字ずつ読み取っています。

ファイル位置をシークするには、マニピュレータ seek(n) や offset(n) を使用できます。