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

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) を使用できます。