前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFBFilePort
IFilePort インターフェースのラッパークラスです。
#include <SFBFilePort.h.hpp>
class SFBFilePort : public SFBPort;
SFMTYPEDEFWRAPPER(SFBFilePort)

継承図

SFBFilePort クラスの継承図

バージョン

BREW 2.0 BREW 2.1 BREW 3.1 BREW 4.0
× × ×

参照

BREW API IFilePort

メンバ

パブリック関数
SFCError Creat( ACharConstPtr path )
この関数は、flags に FS_O_WRONLY|FS_O_CREAT|FS_O_TRUNC を指定した SFBFilePort::OpenEx() と同じです。
SFCError Creat( SFXAnsiStringConstRef path )
この関数は、flags に FS_O_WRONLY|FS_O_CREAT|FS_O_TRUNC を指定した SFBFilePort::OpenEx() と同じです。
SFCError GetLastError( Void )
最後の SFBFilePort::Read()、SFBFilePort::Write()、または SFBFilePort::Seek() 操作で IPORT_ERROR が返された場合に、発生した BREW 定義のエラーコードを返します。
SFCError Lock( UInt32 lock )
関連付けられた SFBFilePort インスタンスで開いたファイル上のロックを適用または削除します。
static
SFBFilePortSmp
NewInstance( SFCErrorPtr exception = null )
SFBFilePort インスタンスを生成します。
static
SFBFilePortSmp
NewInstance( AEECLSID id , SFCErrorPtr exception = null )
SFBFilePort インスタンスを生成します。
SFCError OpenEx( ACharConstPtr path , SInt32 flags )
既存のファイルを、またオプションとして新規作成したファイルを開きます。
SFCError OpenEx( SFXAnsiStringConstRef path , SInt32 flags )
既存のファイルを、またオプションとして新規作成したファイルを開きます。
SFCError Read( VoidPtr buffer , SInt32 size )
読み取り用に現在開いているファイルからバイトを読み取ります。
SFCError Read( SFXBufferPtr buffer )
読み取り用に現在開いているファイルからバイトを読み取ります。
SFCError Rewind( Void )
この関数は、offset にゼロを、whence に FS_SEEK_SET を指定した SFBFilePort::Seek() と同じです。
SFCError Seek( SInt32 offset , SInt32 whence )
開いているファイル内でファイルポイントを移動します。
SFCError Stat( FSStat * buffer , SInt32 size )
開いているファイルについての情報を取得します。
SFCError StatVFS( FSStatVFS * buffer , SInt32 size )
開いているファイルが含まれる仮想ファイルシステムについての情報を取得します。
SFCError Truncate( SInt32 length )
ファイルを指定の長さに切り捨てます。
SFCError Close( Void ) (SFBPort から継承)
開いているポートを閉じる、または進行中の開く操作を停止します。
static
Bool
Exhausted( SInt32 code ) (SFBSource から継承)
SFBSource、SFBPeek、または SFBGetLine がデータを処理し終えたかどうかを判定します。
SFCError IOCtl( SInt32 option , UInt32 val ) (SFBPort から継承)
SFBPort の動作 ( 構成の設定/取得など ) に対する制御を可能にします。
SFCError Open( ACharConstPtr port ) (SFBPort から継承)
指定されたポートを開きます。
SFCError Open( SFXAnsiStringConstRef port ) (SFBPort から継承)
指定されたポートを開きます。
SFCError QueryInterface( AEECLSID clsid , VoidHandle handle ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
SFCError QueryInterface( AEECLSID clsid , SFBBaseSmpPtr handle ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
SFBBaseSmp QueryInterface( AEECLSID clsid ) (SFBQuery から継承)
このオブジェクトからの別の API を問い合わせます。
Void Readable( SFXCallbackPtr callback ) (SFBSource から継承)
SFBSource::Read 関数が ISOURCE_WAIT 以外のものを返した場合に呼び出されるコールバック関数を 登録または登録解除します。
Void Self( AEECLSID clsidReq , SFBQuerySmpPtr clone , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インターフェースで実装するときに使います。
SFBQuerySmp Self( AEECLSID clsidReq , AEECLSID clsidImp ) (SFBQuery から継承)
オブジェクトを単一インターフェースで実装するときに使います。
SInt32 Write( ACharConstPtr port , SInt32 bufSize ) (SFBPort から継承)
指定されたバッファからのバイトをソースストリームにコピーします。
SInt32 Write( SFXAnsiStringConstRef buf ) (SFBPort から継承)
指定されたバッファからのバイトをソースストリームにコピーします。
SInt32 Write( SFXBufferConstRef buf ) (SFBPort から継承)
指定されたバッファからのバイトをソースストリームにコピーします。
Void Writeable( SFXCallbackPtr callback ) (SFBPort から継承)
SFBPort::Write が AEEPORT_WAIT 以外のものを返した場合にコールされるコールバックをスケジュールします。
プロテクト関数
static
SFBBaseSmp
FactoryByCreate( AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを生成します。
static
SFBBaseSmp
FactoryByQuery( SFBQuerySmpConstRef query , AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを指定した SFBQuery インスタンスを使用して生成します。

SFBFilePort::Creat
この関数は、flags に FS_O_WRONLY|FS_O_CREAT|FS_O_TRUNC を指定した SFBFilePort::OpenEx() と同じです。
[ public ]
SFCError Creat(
    ACharConstPtr path   // 対象のファイルへのパス
);
[ public ]
SFCError Creat(
    SFXAnsiStringConstRef path   // 対象のファイルへのパス
);

参照

BREW API IFilePort_Creat | SFBFilePort::OpenEx


SFBFilePort::GetLastError
最後の SFBFilePort::Read()、SFBFilePort::Write()、または SFBFilePort::Seek() 操作で IPORT_ERROR が返された場合に、発生した BREW 定義のエラーコードを返します。
[ public ]
SFCError GetLastError(Void);

戻り値

特定の BREW 定義のエラーコード。

参照

BREW API IFilePort_GetLastError


SFBFilePort::Lock
関連付けられた SFBFilePort インスタンスで開いたファイル上のロックを適用または削除します。
[ public ]
SFCError Lock(
    UInt32 lock   //  ロックするには 1 ( TRUE)、ロック解除するには 0 ( FALSE) に設定する
);

戻り値

ロック/ロック解除操作が正常終了した場合は AEE_SUCCESS を返す。 それ以外の場合は、BREW 定義のエラーコードを返す。

解説

ファイルをロック/ロック解除するには、ファイルを SFBFilePort で事前に開いておく必要があります。デフォルトでは、すべてのロックは勧告的で排他的です。

勧告ロックは、ロックされたファイル上での操作がファイルシステムで制限されないことを意味します。つまり、ロックされたファイルに、勧告ロックを使用せずにアクセスすることができます。勧告ロックは、協同プロセスがファイル上で一貫した操作を実行できるようにします。

排他ロックは、ファイルがロックされた後は、ファイルがロック解除されるまでは、同じファイルをロックするという他のプロセスからの要求がすべて失敗することを意味します。

参照

BREW API IFilePort_Lock | SFBFileSystem::Access


SFBFilePort::NewInstance
SFBFilePort インスタンスを生成します。
[ public, static ]
SFBFilePortSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);
[ public, static ]
SFBFilePortSmp NewInstance(
    AEECLSID id                    // クラスID
    SFCErrorPtr exception = null   // エラー値
);

SFBFilePort::OpenEx
既存のファイルを、またオプションとして新規作成したファイルを開きます。
[ public ]
SFCError OpenEx(
    ACharConstPtr path   // 対象のファイルへのパス
    SInt32 flags         // 1 つ以上の FS_O_* フラグのビット幅 OR。
);
[ public ]
SFCError OpenEx(
    SFXAnsiStringConstRef path   // 対象のファイルへのパス
    SInt32 flags                 // 1 つ以上の FS_O_* フラグのビット幅 OR。
);

引数

path

対象のファイルへのパス。

flags

flags パラメータは以下のいずれかで正確に指定します。

  • FS_O_RDONLY - 読み取り専用アクセスとして開く。
  • FS_O_WRONLY - 書き込み専用アクセスとして開く。
  • FS_O_RDWR - 読み書きアクセスとして開く。

以下の 0 個以上を使用したビット幅 OR:

  • FS_O_CREAT - 存在しない場合にファイルを作成する。
  • FS_O_EXCL - 存在しない場合にのみファイルを作成する。
  • FS_O_TRUNC - 開いた後、ファイルをゼロサイズに切り捨てる。
  • FS_O_APPEND - ファイルの末尾で書き込み操作をする。

以下のように、複数のフラグを使用することがよくあります。

  • FS_O_WRONLY|FS_O_CREAT|FS_O_TRUNC - 書き込み専用にファイルを開く。存在しない場合はファイルを作成する。存在する場合はゼロサイズに切り捨てる。

以下のように、有効でないフラグの組み合わせもあります。

  • FS_O_RDONLY|FS_O_TRUNC - 読み取り専用ファイルを切り捨てることはできない。 FS_O_RDWR|FS_O_EXCL - EXCL は作成を要求する。

戻り値

操作が正常終了した場合は AEE_SUCCESS を返す。それ以外の場合は有効な BREW 定義のエラーコードを返す。

解説

パスの読み書きに必要な特権については、 SFBFileSystem::Access() を参照してください。

参照

BREW API IFilePort_OpenEx | SFBFileSystem::Access


SFBFilePort::Read
読み取り用に現在開いているファイルからバイトを読み取ります。
[ public ]
SFCError Read(
    VoidPtr buffer   // 読み取ったバイトの格納場所
    SInt32 size      // 読み取りを試みるバイト数
);
[ public ]
SFCError Read(
    SFXBufferPtr buffer   // 読み取ったバイトの格納場所
);

戻り値

正常終了した場合は読み取ったバイト数を返す。これは要求したバイト数よりも少ない場合がある。

ゼロの戻り値はファイルの末尾 (EOF) を表す。 それ以外の場合は IPORT_ERROR を返す。

発生した BREW 定義のエラーコードは、 SFBFilePort::GetLastError() を介して取得できる。

解説

バイトは現在のファイルポイントから読み取られます。操作後のファイルポイントは、読み取ったバイト数だけ前進します。

参照

BREW API IFilePort_Read | SFBFilePort::GetLastError


SFBFilePort::Rewind
この関数は、offset にゼロを、whence に FS_SEEK_SET を指定した SFBFilePort::Seek() と同じです。
[ public ]
SFCError Rewind(Void);

参照

BREW API IFilePort_Rewind | SFBFilePort::Seek


SFBFilePort::Seek
開いているファイル内でファイルポイントを移動します。
[ public ]
SFCError Seek(
    SInt32 offset   // whence からのオフセット、負の値も可能
    SInt32 whence   // offset の始点 (FS_SEEK_*)
);

戻り値

正常終了した場合は新しいファイルポイントを返す。 それ以外の場合は IPORT_ERROR を返す。発生した BREW 定義のエラーコードは、 IFilePort_GetLastError() を介して取得できる。

解説

新しいファイルポイントは始点からのオフセットとして指定します。

負のオフセットも可能です。始点は以下のいずれかです。

  • FS_SEEK_SET - ファイルの先頭
  • FS_SEEK_CUR - 現在のファイルポイント
  • FS_SEEK_END - ファイルの末尾

オフセットと始点を組み合わせた結果、ファイルの先頭より前になってはいけません。

新しいポイントはファイルの末尾より後になってもかまいません。ただし、ファイルの末尾を越えてシークしてもファイルは大きくなりません。ファイルを大きくするには、新規バイトを書き込む必要があります。結果的にファイルに穴ができた場合、それらは一連のゼロ値のバイトとして読み取られます。

参照

BREW API IFilePort_Seek


SFBFilePort::Stat
開いているファイルについての情報を取得します。
[ public ]
SFCError Stat(
    FSStat * buffer   // データを読み込む構造体 FSStat へのポインタ。
    SInt32 size       // buffer のサイズ
);

解説

一般的なエラーコード: AEE_EBADSTATE: SFBFilePort が開いていない。

参照

BREW API IFilePort_Stat


SFBFilePort::StatVFS
開いているファイルが含まれる仮想ファイルシステムについての情報を取得します。
[ public ]
SFCError StatVFS(
    FSStatVFS * buffer   // データを読み込む構造体 FSStatVFS へのポインタ
    SInt32 size          // buffer のサイズ
);

戻り値

操作が正常終了した場合は AEE_SUCCESS を返す。それ以外の場合は有効な BREW 定義のエラーコードを返す。

解説

一般的なエラーコード: AEE_EBADSTATE: SFBFilePort が開いていない。

参照

BREW API IFilePort_StatVFS


SFBFilePort::Truncate
ファイルを指定の長さに切り捨てます。
[ public ]
SFCError Truncate(
    SInt32 length   // 新しいファイルの長さ
);

戻り値

操作が正常終了した場合は AEE_SUCCESS を返す。それ以外の場合は有効な BREW 定義のエラーコードを返す。

解説

前のファイルのサイズが指定よりも長かった場合、余分なデータはファイル上で読み取り不能になります。

前のファイルのサイズが指定よりも小さかった場合、延長部分はゼロで埋められたようになります。シークポインタの値は変更されません。

一般的なエラーコード:

  • AEE_EBADSTATE: IFilePort が開いていない。
  • AEE_EPRIVLEVEL: ファイルが書き込み用に開いていない。

参照

BREW API IFilePort_Truncate