前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXFile
ファイルを操作するためのクラスです。
#include <SFXFile.h.hpp>
class SFXFile : public SFXStorage;
SFMTYPEDEFCLASS(SFXFile)

継承図

SFXFile クラスの継承図

協調図

SFXFile クラスの協調図

解説

SFXFile クラスは、ファイルストレージを表すクラスです。 ファイルの作成や、ファイルへのデータの読み書き、 ファイル属性などの情報の取得、テンポラリファイルの作成などが行えます。

ファイルストレージへのデータの読み書きは、 SFXFile クラスを使用して以下の手順で行います。

■ SFXFile クラスの使用手順

  1. SFXFile インスタンス(SFXFile ストレージ)を生成します。
  2. SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出して SFXFile ストレージを開きます。
  3. SFXFile::GetStreamReader / SFXFile::GetStreamWriter 関数を呼び出してストリームを取得します。
  4. ストリームを利用して SFXFile ストレージに対してデータを読み書きします。
  5. ※ストリームを利用しない場合は、SFXFile::Read / SFXFile::Write 関数を呼び出してデータを読み書きします。
  6. SFXFile::Close 関数を呼び出して SFXFile ストレージを閉じます。
[Tip] ファイルのオープンモード

ファイルのオープンモードには、読み込みモードと読み書きモードの 2 種類があります。

ファイル入力の場合は SFXFile::OpenReadOnly 関数を呼び出して 読み込みモードでファイルを開きます。

ファイル出力の場合は SFXFile::OpenReadWrite 関数を呼び出して読み書きモードでファイルを開きます。

[Note] ファイルポインタ

SFXFile クラスは、読み書き用のファイルポインタを 1 つ持ちます。 SFXFile::Read / SFXFile::Write 関数は、 ポインタの位置からデータを読み込み / 書き込み、その分ファイルポインタを移動します。

SFXFile::Seek / SFXFile::SeekStart / SFXFile::SeekEnd 関数を呼び出してファイルポインタを移動することも可能です。

また、ストリームを利用して読み書きする場合も、 読み書きしたデータ量に応じてファイルポインタは移動します。

例 827. ファイルを読み込む方法

SFCError error;  // エラー値
SFXFile file;    // ファイル
SFXAnsiStringStreamReader reader; // ファイル読み込み用ストリーム
SFXAnsiString stringFromFile;     // この変数にデータが読み込まれる
SFXAnsiString tempString;

// 読み込みモードでファイルを開く
if ((error = file.OpenReadOnly(SFXPath("/dir1/data.txt"))) == SFERR_NO_ERROR) {

    // ファイル読み込み用ストリームを取得する
    // ※ size 引数を指定しているのでストリームバッファは固定長(バッファサイズ: 1024 バイト)
    if ((error = file.GetStreamReader(1024, &reader)) == SFERR_NO_ERROR) {

        while ((error == SFERR_NO_ERROR) && !reader.Ends()) { 

            // ※ ファイルの終端に到達するまで以下の処理を繰り返す

            // フェッチを行う: ファイルからストリームバッファにデータを読み込む
            // ※ ストリームバッファは固定長(バッファサイズ: 1024 バイト)なので、1024 バイトまでのデータしか読み込まれない
            if ((error = reader.Fetch()) == SFERR_NO_ERROR) {

                // tempString にデータを読み込む
                if ((error = reader.ReadSFXAnsiString(&tempString)) == SFERR_NO_ERROR) { 

                    // データ読み込みに成功!

                    // stringFromFile の末尾に tempString を加える
                    stringFromFile += tempString;
                }
            }
        }
        // ファイル読み込み用ストリームを解放する
        reader.Release();
    }
    file.Close();
}
if (error != SFERR_NO_ERROR) {

    // エラーが発生したとき
    ...
}

例 828. ファイルの書き込み

SFCError error;  // エラー値
SFXFile file;    // ファイル
SFXAnsiStringStreamWriter writer; // ファイル書き込み用ストリーム
SFXAnsiString string("abcdefghijklmnopqrstuvwxyz");   // 書き込むデータ
ACharConstPtr _p = string.GetBuffer();                // 文字列を指すポインタ
ACharConstPtr _endOfString = _p + string.GetLength(); // 文字列の末尾

SInt32 bufferSize = 1024;

// 読み書きモードでファイルを開く
if ((error = file.OpenReadWrite(SFXPath("/dir/data.txt"))) == SFERR_NO_ERROR) {

    // ファイル書き込み用ストリームを取得する
    // ※ size 引数を指定しているのでストリームバッファは固定長(バッファサイズ: 1024 バイト)
    if ((error = file.GetStreamWriter(bufferSize, &writer)) == SFERR_NO_ERROR) {

        // (書き込むデータのサイズ ÷ バッファサイズ + 1) 回繰り返す
        for (; (error == SFERR_NO_ERROR) && (_p < _endOfString) ; _p += bufferSize) { 

            // バッファサイズよりも大きなデータは複数回 Flush 関数を呼び出して書き込む

            // 書き込む文字列のサイズ
            SInt32 size = (_endOfString - _p < bufferSize) ? _endOfString - _p : bufferSize;

            // _p が指す長さ size の文字列をストリームバッファに書き込む
            if ((error = writer.Write(_p, size)) == SFERR_NO_ERROR) {

                // ファイルに書き込む
                error = writer.Flush();
            }
        }
        // ファイル書き込み用ストリームを解放する
        writer.Release();
    } 
    // ファイルを閉じる
    file.Close();
}
if (error != SFERR_NO_ERROR) {

    // エラーが発生したとき
    ...
}

参照

ストレージ | SFXDirectory | SFXPath | ファイル操作

メンバ

コンストラクタ/デストラクタ
SFXFile( Void )
SFXFile クラスのコンストラクタです。
SFXFile( SInt32 cache )
SFXFile クラスのコンストラクタです。
~SFXFile( Void )
SFXFile クラスのデストラクタです。
パブリック関数
SFCError AsSFBAStream( SFBAStreamSmpPtr result )
SFBAStream インスタンスに変換します。
SFCError AsSFBSource( SFBSourceSmpPtr result )
SFBSource インスタンスに変換します。
Void Cancel( Void )
Read のスケジュールをキャンセルします。
Void Close( Void )
ファイルを閉じます。
static
SFCError
Create( SFXPathConstRef path , Bool force = false )
ファイルを作成します。
static
SFCError
DeviceFreeSpace( UInt32Ptr result )
ファイルシステムの合計空き容量を取得します。[単位: バイト]
static
SFCError
DeviceTotalSpace( UInt32Ptr result )
ファイルシステムの合計容量を取得します。[単位: バイト]
static
SFCError
Exists( SFXPathConstRef path , BoolPtr result )
ファイルが存在するか判定します。
SInt32 GetCacheSize( Void )
ファイル操作時のキャッシュサイズを取得します。[単位: バイト]
static
SFCError
GetCreateDate( SFXPathConstRef path , SFXDatePtr result )
ファイルの作成日時を取得します。
SFXPathConstRef GetFilePath( Void )
ファイルのパスを取得します。
SFBFileSmpConstRef GetSFBFile( Void )
内部で管理する SFBFile インスタンスを取得します。
SFBFileMgrSmpConstRef GetSFBFileMgr( Void )
内部で管理する SFBFileMgr インスタンスを取得します。
static
SFCError
GetSize( SFXPathConstRef path , UInt32Ptr result )
ファイルサイズを取得します。[単位: バイト]
SFCError GetStreamReader( UInt32 size , SFXStreamReaderPtr result )
ファイル読み込み用ストリームを取得します。
SFCError GetStreamReader( SFXStreamReaderPtr result )
ファイル読み込み用ストリームを取得します。
SFCError GetStreamWriter( UInt32 size , SFXStreamWriterPtr result )
ファイル書き込み用ストリームを取得します。
SFCError GetStreamWriter( SFXStreamWriterPtr result )
ファイル書き込み用ストリームを取得します。
static
SFCError
GetTemporaryPath( SFXPathConstRef path , SFXPathPtr result )
既存のファイルパスと重複しないテンポラリファイルのパスを取得します。
static
SFCError
GetUniquePath( SFXPathConstRef path , SFXAnsiStringConstRef prefix , SFXAnsiStringConstRef suffix , SFXPathPtr result )
既存のファイルパスと重複しないファイルパスを取得します。
static
SFCError
IsReadOnly( SFXPathConstRef path , BoolPtr result )
ファイルが読み込み専用であるか判定します。
static
SFCError
IsSystem( SFXPathConstRef path , BoolPtr result )
ファイルがシステムファイルであるか判定します。
SFCError OpenReadOnly( SFXPathConstRef path )
ファイルを読み込みモードで開きます。
SFCError OpenReadWrite( SFXPathConstRef path , Bool force = false )
ファイルを読み書きモードで開きます。
SFCError Read( VoidPtr buffer , UInt32Ptr size )
Read(ストリームを使用しないファイルからのデータ読み込み)を行います。
static
SFCError
Remove( SFXPathConstRef path )
ファイルを削除します。
static
SFCError
Rename( SFXPathConstRef from , SFXPathConstRef to )
ファイルパスを変更します。
SFCError ScheduleRead( CallbackSPP spp , VoidPtr reference )
Read(ストリームを使用しないファイルからのデータ読み込み)をスケジュールします。
SFCError ScheduleWrite( CallbackSPP spp , VoidPtr reference )
【現在、この関数は使えません。】
SFCError Seek( SInt32 distance )
現在の位置から指定した移動量だけファイルポインタを移動します。
SFCError SeekEnd( SInt32 distance )
ファイルの末尾から指定した移動量だけファイルポインタを移動します。
SFCError SeekStart( SInt32 distance )
ファイルの先頭からファイルポインタを進めます。
Void SetCacheSize( SInt32 size )
ファイル操作時のキャッシュサイズを設定します。
UInt32 Tell( Void )
現在のファイルポインタの位置を取得します。
SFCError Truncate( UInt32 position )
指定した位置でファイルを切り捨てます。
SFCError Write( VoidConstPtr buffer , UInt32Ptr size )
Write します。
CallbackSPP (SFXStorage から継承)
ストレージクラスで使用するコールバック関数の型です。

SFXFile::SFXFile
SFXFile クラスのコンストラクタです。
[ public, explicit ]
SFXFile(Void);
[ public, explicit ]
SFXFile(
    SInt32 cache   // ファイル操作時のキャッシュサイズ
);

解説

このコンストラクタでは、 cache 引数を指定すると、ファイル操作時のキャッシュサイズが設定されます。

これにより、ファイル操作のパフォーマンスをチューニングできます。

[Note] 注意

cache 引数を指定した場合、 このコンストラクタは、内部で SFBFile::SetCacheSize 関数を呼び出します。

参照

SFBFile::SetCacheSize | SFXFile::SetCacheSize | BREW API IFILE_SetCacheSize


SFXFile::~SFXFile
SFXFile クラスのデストラクタです。
[ public, virtual ]
~SFXFile(Void);

解説

このデストラクタは、 SFXFile::Close 関数を呼び出します。

[Note] 注意

登録されていたコールバックはキャンセルされます。

参照

SFXFile::Close


SFXFile::AsSFBAStream
SFBAStream インスタンスに変換します。
[ public, virtual, const ]
SFCError AsSFBAStream(
    SFBAStreamSmpPtr result   // SFBAStream インスタンスへのポインタ
);

引数

result

SFBAStream インスタンスへのポインタを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • このストレージが閉じているとき: SFERR_INVALID_STATE
  • result 引数が null のとき: SFERR_INVALID_PARAM

解説

この関数は、 このストレージが内部で管理する SFBFile インスタンスを SFBAStream インスタンスに変換します。

result 引数には、変換結果である SFBAStream インスタンスへのポインタが返ります。

[Note] 注意

この関数により、 このストレージを SFBAStream インスタンスとして扱えます。

参照

SFBFile | SFBAStream


SFXFile::AsSFBSource
SFBSource インスタンスに変換します。
[ public, virtual, const ]
SFCError AsSFBSource(
    SFBSourceSmpPtr result   // SFBSource インスタンスへのポインタ
);

引数

result

SFBSource インスタンスへのポインタを指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • このストレージが閉じているとき: SFERR_INVALID_STATE
  • result 引数が null のとき: SFERR_INVALID_PARAM

解説

この関数は、 このストレージが内部で管理する SFBFile インスタンスを SFBSource インスタンスに変換します。

result 引数には、変換結果である SFBSource インスタンスへのポインタが返ります。

[Note] 注意

この関数は、内部で BREW API の BREW API ISOURCEUTIL_SourceFromAStream 関数を呼び出します。

[Note] 注意

この関数により、 このストレージを SFBSource インスタンスとして扱えます。

参照

SFBFile | SFBSource | BREW API ISOURCEUTIL_SourceFromAStream


SFXFile::Cancel
Read のスケジュールをキャンセルします。
[ public, virtual ]
Void Cancel(Void);

解説

この関数は、 SFXFile::ScheduleRead 関数による Read(ストリームを使用しないファイルからのデータ読み込み)のスケジュールをキャンセルします。

具体的には、コールバック関数の登録をキャンセルします。

[Note] 注意

この関数は、SFXFile::Close 関数から呼び出されます。

参照

SFXFile::ScheduleRead | SFXFile::Close


SFXFile::Close
ファイルを閉じます。
[ public ]
Void Close(Void);

解説

この関数は、このファイルを閉じます。

具体的には、 SFXFile::Cancel 関数を呼び出して Read(ストリームを使用しないファイルからのデータ読み込み)のスケジュールをキャンセルし、 内部で管理している SFBFile インスタンスを解放します。

[Note] 注意

登録されていたコールバックはキャンセルされます。

[Note] 注意

この関数は、SFXFile::~SFXFile デストラクタから呼び出されます。

[Tip] Tip

サスペンド時は、この関数を呼び出してリソースを解放します。

使用例

SFXFile file;

...

file.Close();  // ファイルを閉じる

参照

SFXFile::Cancel | SFXFile::~SFXFile | SFXFile::Create | SFXFile::OpenReadWrite | SFXFile::OpenReadOnly | SFBFile


SFXFile::Create
ファイルを作成します。
[ public, static ]
SFCError Create(
    SFXPathConstRef path   // 作成するファイルのパス
    Bool force = false     // ディレクトリを再帰的に作成するかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • path 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定したファイルを作成します。

引数 force を true にすると、指定したパスに存在しないディレクトリも作成します。

[Note] 注意

この関数は、内部で SFBFileMgr::OpenFile 関数を呼び出します。

使用例

// ファイルを強制的に作成
// 親ディレクトリが存在しない場合は自動的に作成
SFXFile::Create(SFXPath("/dir1/data.txt"), true);

参照

SFBFileMgr::OpenFile | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::Remove | BREW API IFILEMGR_OpenFile | BREW API IFILEMGR_GetLastError


SFXFile::DeviceFreeSpace
ファイルシステムの合計空き容量を取得します。[単位: バイト]
[ public, static ]
SFCError DeviceFreeSpace(
    UInt32Ptr result   // ファイルシステムの合計空き容量を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、ファイルシステムの合計空き容量を取得します。

取得したファイルシステムの合計空き容量は、result 引数に返ります。[単位: バイト]

[Note] 注意

この関数は、内部で SFBFileMgr::GetFreeSpace 関数を呼び出します。

[Caution] 注意

シミュレータでファイルシステムの合計空き容量が最大 32 ビット整数値よりも大きい場合は、 最大 32 ビット整数値 (0xFFFFFFFF) が返されます。

使用例

UInt32 space;

SFXFile::DeviceFreeSpace(&space); // space にファイルシステムの合計空き容量を取得する

参照

SFBFileMgr::GetFreeSpace | SFXFile::DeviceTotalSpace | BREW API IFILE_IFILEMGR_GetFreeSpace | BREW API IFILEMGR_GetLastError


SFXFile::DeviceTotalSpace
ファイルシステムの合計容量を取得します。[単位: バイト]
[ public, static ]
SFCError DeviceTotalSpace(
    UInt32Ptr result   // 合計容量を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、ファイルシステムの合計容量を取得します。

取得した合計容量は、result 引数に返ります。[単位: バイト]

[Note] 注意

この関数は、内部で SFBFileMgr::GetFreeSpace 関数を呼び出します。

[Caution] 注意

シミュレータでファイルシステムの合計容量が最大 32 ビット整数値よりも大きい場合は、 最大 32 ビット整数値 (0xFFFFFFFF) が返されます。

使用例

UInt32 space;

SFXFile::DeviceTotalSpace(&space); // space にファイルシステムの合計容量を取得する

参照

SFBFileMgr::GetFreeSpace | SFXFile::DeviceFreeSpace | BREW API IFILE_IFILEMGR_GetFreeSpace | BREW API IFILEMGR_GetLastError


SFXFile::Exists
ファイルが存在するか判定します。
[ public, static ]
SFCError Exists(
    SFXPathConstRef path   // 存在を調べるファイルのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • 失敗したとき: SFERR_FAILED

解説

この関数は、path 引数に指定したファイルが存在するか判定します。 判定結果は、result 引数に返ります。

[Note] 注意

この関数は、内部で SFBFileMgr::Test 関数を呼び出します。

使用例

Bool b;

// Exists 関数の戻り値はエラー値
SFXFile::Exists(SFXPath("/dir1/data.txt"), &b);

if (b) {
    // ファイルが存在するとき
    ...

}

参照

SFBFileMgr::Test | SFXFile::IsReadOnly | SFXFile::IsSystem | BREW API IFILEMGR_Test


SFXFile::GetCacheSize
ファイル操作時のキャッシュサイズを取得します。[単位: バイト]
[ public, const ]
SInt32 GetCacheSize(Void);

戻り値

ファイル操作時のキャッシュサイズ [単位: バイト]

解説

この関数は、SFXFile::SetCacheSize 関数、 またはSFXFile::SFXFile コンストラクタで設定した、 ファイル操作時のキャッシュサイズを取得します。[単位: バイト]

参照

SFXFile::SetCacheSize | SFXFile::SFXFile


SFXFile::GetCreateDate
ファイルの作成日時を取得します。
[ public, static ]
SFCError GetCreateDate(
    SFXPathConstRef path   // ファイルのパス
    SFXDatePtr result      // 作成日時を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定したファイルの作成日時を取得します。

取得したファイル作成日時は、result 引数に返ります。

[Note] 注意

この関数は、内部で SFBFileMgr::GetInfo 関数を呼び出します。

使用例

SFXDate date;

// ファイルの作成日時を取得する
SFXFile::GetCreateDate(SFXPath("/dir1/data.txt"), &date);

参照

SFBFileMgr::GetInfo | BREW API IFILE_IFILEMGR_GetInfo | BREW API IFILEMGR_GetLastError


SFXFile::GetFilePath
ファイルのパスを取得します。
[ public, const ]
SFXPathConstRef GetFilePath(Void);

戻り値

  • ファイルが開いているとき: ファイルのパス
  • そうでないとき: 空のパス(SFXPath::EmptyInstance 関数の戻り値)

解説

この関数は、このファイルストレージのファイルパスを取得します。

このファイルストレージが閉じているときは、 空のパス(SFXPath::EmptyInstance 関数の戻り値)が返ります。

使用例

SFXFile file;
SFXPath path("/data.txt");

// 1: 
TRACE("1: %s", file.GetFilePath().Get().GetCString());

if (file.OpenReadOnly(path) == SFERR_NO_ERROR) {

    // 2: /data.txt
    TRACE("2: %s", file.GetFilePath().Get().GetCString());

    file.Close();

    // 3: 
    TRACE("3: %s", file.GetFilePath().Get().GetCString());
}

参照

SFXPath | SFXFile::OpenReadOnly | SFXFile::Close | SFXPath::EmptyInstance


SFXFile::GetSFBFile
内部で管理する SFBFile インスタンスを取得します。
[ public, const ]
SFBFileSmpConstRef GetSFBFile(Void);

戻り値

このファイルが内部で管理する SFBFile インスタンス

解説

この関数は、 このファイルが内部で管理する SFBFile インスタンスを取得します。

参照

SFBFile | BREW API IFile


SFXFile::GetSFBFileMgr
内部で管理する SFBFileMgr インスタンスを取得します。
[ public, const ]
SFBFileMgrSmpConstRef GetSFBFileMgr(Void);

戻り値

このファイルが内部で管理する SFBFileMgr インスタンス

解説

この関数は、 このファイルが内部で管理する SFBFileMgr インスタンスを取得します。

参照

SFBFileMgr | BREW API IFileMgr


SFXFile::GetSize
ファイルサイズを取得します。[単位: バイト]
[ public, static ]
SFCError GetSize(
    SFXPathConstRef path   // ファイルのパス
    UInt32Ptr result       // サイズを受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定されたファイルのサイズを取得します。

取得したファイルサイズは、result 引数に返ります。[単位: バイト]

[Note] 注意

この関数は、内部で SFBFileMgr::GetInfo 関数を呼び出します。

使用例

UInt32 size;

// ファイルサイズを取得する
SFXFile::GetSize(SFXPath("/dir1/data.txt"), &size); 

参照

SFBFileMgr::GetInfo | BREW API IFILE_IFILEMGR_GetInfo | BREW API IFILEMGR_GetLastError


SFXFile::GetStreamReader
ファイル読み込み用ストリームを取得します。
[ public, virtual ]
SFCError GetStreamReader(
    UInt32 size                 // バッファサイズ
    SFXStreamReaderPtr result   // ファイル読み込み用ストリームへのポインタ
);
[ public, virtual ]
SFCError GetStreamReader(
    SFXStreamReaderPtr result   // ファイル読み込み用ストリームへのポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • ファイルが閉じているとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、ファイル読み込み用ストリームを取得します。

size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamReader クラスが利用されます。

[Tip] Tip
ファイル読み込み用ストリームは、読み込むデータの種類に応じて SFXBinaryStreamReaderSFXAnsiStringStreamReader、または SFXWideStringStreamReader クラスを使い分けます。

使用例

SFXFile file;
SFXAnsiStringStreamReader reader;
SFXAnsiString temp;
SFXAnsiString string;                 // 読み出した文字列を格納する変数
SFXPath path("/data.txt");  // ファイル名

// ファイルを開く
if (file.OpenReadOnly(path) == SFERR_NO_ERROR) {
    // ファイルのオープンに成功したとき
    
    // ファイル読み込み用ストリームを取得する(バッファサイズ: 1024 バイト)
    file.GetStreamReader(1024, &reader);
    
    // ファイルの終端まで繰り返す
    while (!reader.Ends()) {
        if (reader.GetReadableSize() == 0) {
            // ファイルからファイル読み込み用ストリームバッファへデータを読み込む
            reader.Fetch();
        }
        // ファイル読み込み用ストリームバッファから temp へデータを読み込む
        reader >> temp;
        string += temp;
    }
    file.Close();  // ファイルを閉じる
}

参照

SFXFile::GetStreamWriter | SFXBinaryStreamReader | SFXAnsiStringStreamReader | SFXWideStringStreamReader | ストリームバッファ


SFXFile::GetStreamWriter
ファイル書き込み用ストリームを取得します。
[ public, virtual ]
SFCError GetStreamWriter(
    UInt32 size                 // バッファサイズ
    SFXStreamWriterPtr result   // ファイル書き込み用ストリームへのポインタ
);
[ public, virtual ]
SFCError GetStreamWriter(
    SFXStreamWriterPtr result   // ファイル書き込み用ストリームへのポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき: SFERR_INVALID_PARAM
  • ファイルが閉じているとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、ファイル書き込み用ストリームを取得します。

size 引数を指定する場合、ストリームバッファは指定したサイズで固定です。 指定しない場合は、ストリームバッファは可変長になり、 内部的に SFXElasticStreamWriter クラスが利用されます。

[Tip] Tip
ファイル書き込み用ストリームは、書き込むデータの種類に応じて SFXBinaryStreamWriterSFXAnsiStringStreamWriter、または SFXWideStringStreamWriter クラスを使い分けます。

使用例

SFXFile file;
SFXAnsiStringStreamWriter writer;
SFXAnsiString string("abcdefg"); // 書き込む文字列
SFXPath path("/data.txt");       // ファイル名

// ファイルを開く
if (file.OpenReadWrite(path) == SFERR_NO_ERROR) {
    // ファイルのオープンに成功したとき
    
    // ファイル書き込み用ストリームを取得する
    file.GetStreamWriter(string.GetLength(), &writer);
    // string からファイル書き込み用ストリームバッファへデータを書き込む
    writer << string;
    // ファイル書き込み用ストリームバッファからファイルへデータを書き込む
    writer.Flush();
    
    file.Close();  // ファイルを閉じる
}

参照

SFXFile::GetStreamReader | SFXBinaryStreamWriter | SFXAnsiStringStreamWriter | SFXWideStringStreamWriter | ストリームバッファ


SFXFile::GetTemporaryPath
既存のファイルパスと重複しないテンポラリファイルのパスを取得します。
[ public, static ]
SFCError GetTemporaryPath(
    SFXPathConstRef path   // テンポラリファイルを作成するディレクトリのパス
    SFXPathPtr result      // テンポラリファイルのパスを受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリでないとき: SFERR_INVALID_PARAM
  • 失敗したとき: SFERR_FAILED

解説

この関数は、既存のファイルパスと重複しないテンポラリファイルのパスを取得します。

[Note] 注意

この関数は、内部的に接頭辞 "sfx" を prefix 引数に、 接尾辞 "fle.tmp" を suffix 引数に指定して SFXFile::GetUniquePath 関数を呼び出します。

使用例

SFXPath dir("/");
SFXPath path;

if (SFXFile::GetTemporaryPath(dir, &path) == SFERR_NO_ERROR) {

    // "/sfx7182CBD4fle.tmp" のようなファイルパスが得られる
    TRACE("Temporary File Path: %s", path.Get().GetCString());
}

参照

SFXFile::GetUniquePath | SFXDirectory::GetTemporaryPath


SFXFile::GetUniquePath
既存のファイルパスと重複しないファイルパスを取得します。
[ public, static ]
SFCError GetUniquePath(
    SFXPathConstRef path           // ファイルを作成するディレクトリのパス
    SFXAnsiStringConstRef prefix   // ファイル名のプレフィックス(接頭辞)
    SFXAnsiStringConstRef suffix   // ファイル名のサフィックス(接尾辞)
    SFXPathPtr result              // ファイルのパスを受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリでないとき: SFERR_INVALID_PARAM
  • 失敗したとき: SFERR_FAILED

解説

この関数は、既存のファイルパスと重複しないファイルパスを取得します。

[Note] 注意

ファイル名は乱数によって生成されるため、 同じ名前のファイルパスが存在する場合、ファイルパスの取得に失敗します。

65 回以上連続で失敗した場合は、SFERR_FAILED エラーを返します。

[Tip] Tip

一時的なファイル(すぐに削除するファイル)の場合は、 SFXFile::GetTemporaryPath 関数を使います。

使用例

SFXPath dir("/");
SFXPath path;

if (SFXFile::GetUniquePath(dir, "sfx", ".dat", &path) == SFERR_NO_ERROR) {
    // "/sfx7182CBD4.dat" のようなファイルパスが得られる
    TRACE("%s", path.Get().GetCString());
}

参照

SFXDirectory::GetUniquePath | SFXFile::GetTemporaryPath


SFXFile::IsReadOnly
ファイルが読み込み専用であるか判定します。
[ public, static ]
SFCError IsReadOnly(
    SFXPathConstRef path   // 調べるファイルのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定されたファイルが読み込み専用であるか判定します。

判定結果は、result 引数に返ります。

[Note] 注意

この関数は、内部で SFBFileMgr::GetInfo 関数を呼び出します。

使用例

Bool b;

// IsReadOnly 関数の戻り値はエラー値
SFXFile::IsReadOnly(SFXPath("/dir1/data.txt"), &b);

if (b) {
    // ファイルが読み込み専用の場合
    ...
}

参照

SFBFileMgr::GetInfo | SFXFile::Exists | SFXFile::IsSystem | BREW API IFILEMGR_GetInfo | BREW API IFILEMGR_GetLastError


SFXFile::IsSystem
ファイルがシステムファイルであるか判定します。
[ public, static ]
SFCError IsSystem(
    SFXPathConstRef path   // 調べるファイルのパス
    BoolPtr result         // 結果を受け取るポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • result 引数が null のとき、またはpath 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定されたファイルがシステムファイルであるか判定します。

判定結果は、result 引数に返ります。

[Note] 注意

この関数は、内部で SFBFileMgr::GetInfo 関数を呼び出します。

参照

SFBFileMgr::GetInfo | SFXFile::Exists | SFXFile::IsReadOnly | BREW API IFILEMGR_GetInfo | BREW API IFILEMGR_GetLastError


SFXFile::OpenReadOnly
ファイルを読み込みモードで開きます。
[ public ]
SFCError OpenReadOnly(
    SFXPathConstRef path   // 開くファイルパス
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが既に開いているとき: SFERR_INVALID_STATE
  • path 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他のエラーが発生したとき: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、引数に指定されたファイルを読み込みモードで開きます。

[Note] 注意

この関数は、内部で SFBFileMgr::OpenFile 関数を呼び出します。

使用例

SFXFile file;

// ファイルを読み込みモードで開く
if (file.OpenReadOnly(SFXPath("/dir1/data.txt")) == SFERR_NO_ERROR) {
    
    ...
    
    // ファイルを閉じる
    file.Close();
}

参照

SFBFileMgr::OpenFile | SFXFile::Create | SFXFile::OpenReadWrite | BREW API IFILEMGR_OpenFile | BREW API IFILEMGR_GetLastError


SFXFile::OpenReadWrite
ファイルを読み書きモードで開きます。
[ public ]
SFCError OpenReadWrite(
    SFXPathConstRef path   // 開くファイルのパス
    Bool force = false     // ファイルが存在しない場合は作成するかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが既に開いているとき: SFERR_INVALID_STATE
  • path 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、引数に指定されたファイルを読み書きモードで開きます。

[Tip] Tip

force 引数に true を設定すると、 引数に指定されたファイルが存在しない場合、そのファイルを作成します。

[Note] 注意

この関数は、内部で SFBFileMgr::OpenFile 関数を呼び出します。

使用例

SFXFile file;

// ファイルを読み書きモードで開く
if (file.OpenReadWrite(SFXPath("/dir1/data.txt")) == SFERR_NO_ERROR) {

    ...

    // ファイルを閉じる
    file.Close();
}

参照

SFBFileMgr::OpenFile | SFXFile::Create | SFXFile::OpenReadOnly | BREW API IFILEMGR_OpenFile | BREW API IFILEMGR_GetLastError


SFXFile::Read
Read(ストリームを使用しないファイルからのデータ読み込み)を行います。
[ public, virtual ]
SFCError Read(
    VoidPtr buffer   // データを読み込むバッファ
    UInt32Ptr size   // 呼び出す前: データを読み込むバッファのサイズ。戻り値: 実際に読み込んだデータのサイズ
);

引数

buffer

データを読み込むバッファを指定します。

size

この関数を呼び出す時は、データを読み込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに読み込んだデータのサイズが格納されています。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき: SFERR_INVALID_STATE
  • size 引数が null のとき: SFERR_INVALID_PARAM
  • 再試行が必要なとき: AEE_STREAM_WOULDBLOCK
  • ファイルの終端であるとき: EFILEEOF

解説

この関数は、Read(ストリームを使用しないファイルからのデータ読み込み)を行います。

※ この関数が AEE_NET_WOULDBLOCK を返す場合、 SFXFile::ScheduleRead 関数でコールバック関数を登録し、 コールバック関数の中で再度この関数を呼び出して Read を行う必要があります。

[Note] 注意

この関数は、 内部で SFBAStream::Read 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

参照

SFBAStream::Read | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::ScheduleRead | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::Seek | SFXFile::Write | BREW API IFILE_Read


SFXFile::Remove
ファイルを削除します。
[ public, static ]
SFCError Remove(
    SFXPathConstRef path   // 削除するファイルパス
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • path 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、path 引数に指定されたファイルを削除します。

[Note] 注意

この関数は、内部で SFBFileMgr::Remove 関数を呼び出します。

使用例

if (SFXFile::Remove(SFXPath("/dir/data.txt")) == SFERR_NO_ERROR) {
   ...
}

参照

SFBFileMgr::Remove | SFXFile::Create | SFXDirectory::Remove | BREW API IFILE_Remove | BREW API IFILEMGR_GetLastError


SFXFile::Rename
ファイルパスを変更します。
[ public, static ]
SFCError Rename(
    SFXPathConstRef from   // 変更前のファイルパス
    SFXPathConstRef to     // 変更後のファイルパス
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • to / from 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、指定されたファイルパスを変更を行います(指定されたファイルを移動します)。

[Note] 注意

この関数は、内部で SFBFileMgr::Rename 関数を呼び出します。

使用例

以下は、dir1 ディレクトリにある data.txt を dir2 ディレクトリに移動するコードです。

if (SFXFile::Rename(SFXPath("/dir1/data.txt"), SFXPath("/dir2/data.txt")) == SFERR_NO_ERROR) {

    ...

}

以下は、dir1 ディレクトリにある data.txt を file.txt に変更するコードです。

if (SFXFile::Rename(SFXPath("/dir1/data.txt"), SFXPath("/dir1/file.txt")) == SFERR_NO_ERROR) {

    ...

}

参照

SFBFileMgr::Rename | BREW API IFILE_IFILEMGR_Rename | BREW API IFILEMGR_GetLastError


SFXFile::ScheduleRead
Read(ストリームを使用しないファイルからのデータ読み込み)をスケジュールします。
[ public, virtual ]
SFCError ScheduleRead(
    CallbackSPP spp     // コールバック関数のポインタ
    VoidPtr reference   // コールバック関数に渡すユーザーデータ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき、または「Read スケジュール中の状態」のとき: SFERR_INVALID_STATE

解説

この関数は、 Read(ストリームを使用しないファイルからのデータ読み込み)をスケジュールします。

具体的には、 SFXFile::Read 関数による Read を行うコールバック関数を登録します。 登録されたコールバック関数は、Read が可能になると BREW AEE により呼び出されます。

コールバック関数が呼び出されるまでは、「Read スケジュール中の状態」になります。 コールバック関数が呼び出されると、この関数を呼び出す直前の状態(ファイルが開いている状態)に戻ります。

コールバック関数が呼び出される前に、 SFXFile::Cancel 関数を呼び出すと、 Read(ストリームを使用しないファイルからのデータ読み込み)のスケジュールはキャンセルされ、 この関数を呼び出す直前の状態(ファイルが開いている状態)に戻ります。

なお、この関数の戻り値がエラー(SFERR_NO_ERROR 以外の値)の場合、コールバック関数は呼び出されません。

SFXFile::Read 関数の戻り値が AEE_STREAM_WOULDBLOCK である場合、 この関数を使用してコールバック関数を登録し、再び Read(ストリームを使用しないファイルからのデータ読み込み)を試みます。

[Note] 注意

この関数は、 内部で SFBAStream::Readable 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

また、既に Read がスケジュールされている場合は、SFERR_INVALID_STATE エラーが返ります。

使用例

class MyClass {
    SFXFile _file;
    Void Function(Void);
    XALLBACK_DECLARE_SFXFILE(OnRead)
};

Void MyClass::Function(Void)
{
    SFXPath  path("/dir1/data.txt");
    
    // ファイルを読み込みモードで開く
    if (_file.OpenReadOnly(path) == SFERR_NO_ERROR) {

        // Read(ファイルからのデータ読み込み) をスケジュールする: コールバック関数を登録する
        // ※ Read 可能になれば、OnRead コールバック関数が呼び出される
        _file.ScheduleRead(XALLBACK_INTERNAL(OnRead));
    }
}

// Read 可能が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXFILE(MyClass, OnRead, error)
{
    SFXBuffer buffer;
    UInt32 size;

    buffer.SetSize(32);  // データを読み込むためのバッファを確保する

    size = buffer.GetSize();  
    // ファイルから buffer へデータを読み込む
    switch (_file.Read(buffer.GetBuffer(), &size)) {

        case SFERR_NO_ERROR:

            // 読み込んだデータを表示する
            buffer.SetSize(size + 1);
            buffer[buffer.GetSize() + 1] = '\0';
            TRACE("%s", SFXAnsiString(buffer).GetCString());

            // Read(ファイルからのデータ読み込み) をスケジュールする: コールバック関数を登録する
            // ※ Read 可能になれば、OnRead コールバック関数が呼び出される
            _file.ScheduleRead(XALLBACK_INTERNAL(OnRead));
            break;

        case EFILEEOF:

            _file.Close();  // ファイルを閉じる
            break;
        case AEE_STREAM_WOULDBLOCK:

            // Read(ファイルからのデータ読み込み) をスケジュールする: コールバック関数を登録する
            // ※ Read 可能になれば、OnRead コールバック関数が呼び出される
            _file.ScheduleRead(XALLBACK_INTERNAL(OnRead));
            break;
        }
    return;
}

参照

SFBAStream::Readable | SFXFile::Read | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::Cancel | BREW API IFILE_Readable


SFXFile::ScheduleWrite
【現在、この関数は使えません。】
[ public, virtual ]
SFCError ScheduleWrite(
    CallbackSPP spp     // コールバック関数のポインタ
    VoidPtr reference   // コールバック関数に渡すユーザーデータ
);

戻り値

SFERR_UNSUPPORTED

解説

【現在、この関数は使えません。】


SFXFile::Seek
現在の位置から指定した移動量だけファイルポインタを移動します。
[ public ]
SFCError Seek(
    SInt32 distance   // 移動量
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき: SFERR_INVALID_STATE
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、 現在の位置から指定した移動量だけファイルポインタを移動します。

ファイルポインタを前方に移動する場合は、移動量(distance 引数)に負の値を指定します。

ファイルが読み込み専用モードで開いているとき、 移動後のファイルポインタの位置がファイルの先頭よりも前方または末尾よりも後方になる場合、この操作は失敗します。

ファイルが読み書きモードで開いているとき、 移動後のファイルポインタの位置がファイルの末尾を越える場合、ファイルはその位置まで拡張されます。 また、移動後のファイルポインタの位置がファイルの先頭よりも前になる場合は、この操作は失敗します。

[Note] 注意

この関数は、 内部で SFBFile::Seek 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

参照

SFBFile::Seek | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::SeekStart | SFXFile::SeekEnd | SFXFile::Tell | BREW API IFILE_Seek | BREW API IFILEMGR_GetLastError


SFXFile::SeekEnd
ファイルの末尾から指定した移動量だけファイルポインタを移動します。
[ public ]
SFCError SeekEnd(
    SInt32 distance   // 移動量
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき: SFERR_INVALID_STATE
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、 ファイルの末尾から指定した移動量だけファイルポインタを移動します。

ファイルポインタを前方に移動する場合は、移動量(distance 引数)に負の値を指定します。

ファイルが読み込み専用モードで開いているとき、 移動後のファイルポインタの位置がファイルの先頭よりも前方または末尾よりも後方になる場合、この操作は失敗します。

ファイルが読み書きモードで開いているとき、 移動後のファイルポインタの位置がファイルの末尾を越える場合、ファイルはその位置まで拡張されます。 また、移動後のファイルポインタの位置がファイルの先頭よりも前になる場合は、この操作は失敗します。

[Note] 注意

この関数は、 内部で SFBFile::Seek 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

参照

SFBFile::Seek | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::Seek | SFXFile::SeekStart | SFXFile::Tell | BREW API IFILE_Seek | BREW API IFILEMGR_GetLastError


SFXFile::SeekStart
ファイルの先頭からファイルポインタを進めます。
[ public ]
SFCError SeekStart(
    SInt32 distance   // 移動量
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき: SFERR_INVALID_STATE
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、 ファイルの先頭から指定した移動量だけファイルポインタを移動します。

ファイルポインタを前方に移動する場合は、移動量(distance 引数)に負の値を指定します。

ファイルが読み込み専用モードで開いているとき、 移動後のファイルポインタの位置がファイルの先頭よりも前方または末尾よりも後方になる場合、この操作は失敗します。

ファイルが読み書きモードで開いているとき、 移動後のファイルポインタの位置がファイルの末尾を越える場合、ファイルはその位置まで拡張されます。 また、移動後のファイルポインタの位置がファイルの先頭よりも前になる場合は、この操作は失敗します。

[Note] 注意

この関数は、 内部で SFBFile::Seek 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadOnly / SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

参照

SFBFile::Seek | SFXFile::OpenReadOnly | SFXFile::OpenReadWrite | SFXFile::Seek | SFXFile::SeekEnd | SFXFile::Tell | BREW API IFILE_Seek | BREW API IFILEMGR_GetLastError


SFXFile::SetCacheSize
ファイル操作時のキャッシュサイズを設定します。
[ public ]
Void SetCacheSize(
    SInt32 size   // ファイル操作時のキャッシュサイズ
);

解説

この関数は、ファイル操作時のキャッシュサイズを設定します。

これにより、ファイル操作のパフォーマンスをチューニングできます。

[Note] 注意

ファイル操作時のキャッシュサイズは、 SFXFile::SFXFile コンストラクタで設定することも可能です。

[Note] 注意

この関数は、内部で SFBFile::SetCacheSize 関数を呼び出します。

参照

SFBFile::SetCacheSize | SFXFile::SFXFile | SFXFile::GetCacheSize | BREW API IFILE_SetCacheSize


SFXFile::Tell
現在のファイルポインタの位置を取得します。
[ public, const ]
UInt32 Tell(Void);

戻り値

  • ファイルストレージが開いているとき: ファイルポインタの現在の位置
  • ファイルストレージが閉じているとき: 0

解説

この関数は、現在のファイルポインタの位置を取得します。

このファイルが閉じている場合は、0 が返ります。

[Note] 注意

この関数は、 内部で SFBFile::Seek 関数を呼び出します。

使用例

// 現在の位置でファイルを切り詰める
file.Truncate(file.Tell());

参照

SFBFile::Seek | SFXFile::Seek | SFXFile::SeekStart | SFXFile::SeekEnd | BREW API IFILE_Seek


SFXFile::Truncate
指定した位置でファイルを切り捨てます。
[ public ]
SFCError Truncate(
    UInt32 position   // ファイルを切り捨てる位置
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが開いていないとき: SFERR_INVALID_STATE
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、position 引数で指定された位置でファイルを切り捨てます。

[Note] 注意

この関数は、 内部で SFBFile::Truncate 関数を呼び出します。

使用例

// 現在の位置でファイルを切り捨てる
file.Truncate(file.Tell());

参照

SFBFile::Truncate | SFXFile::Seek | SFXFile::SeekStart | SFXFile::SeekEnd | SFXFile::Tell | BREW API IFILE_Truncate | BREW API IFILEMGR_GetLastError


SFXFile::Write
Write します。
[ public, virtual ]
SFCError Write(
    VoidConstPtr buffer   // データを書き込むバッファ
    UInt32Ptr size        // 呼び出す前: データを書き込むバッファのサイズ。戻り値: 実際に書き込んだデータのサイズ
);

引数

buffer

データを書き込むバッファを指定します。

size

この関数を呼び出す時は、データを書き込むバッファのサイズを指定します。 この関数が戻ると、実際にバッファに書き込んだデータのサイズが格納されています。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • ファイルが閉じているとき: SFERR_INVALID_STATE
  • size 引数が null のとき: SFERR_INVALID_PARAM
  • ファイルが終端のとき: EFILEEOF

解説

この関数は、 Write します(ストリームを使用せずにファイルにデータを書き込みます)。

[Note] 注意

この関数は、 内部で SFBFile::Write 関数を呼び出します。

[Note] 前提条件

この関数を呼び出す前に、 SFXFile::OpenReadWrite 関数を呼び出してファイルを開く必要があります 。

参照

SFBFile::Write | SFXFile::OpenReadWrite | SFXFile::Read | SFXFile::Seek | BREW API IFILE_Write