ファイルのアクセス位置を移動するには?
ファイルのアクセス位置を移動するには、IFile インターフェイスの IFILE_Seek 関数を使用します。 ファイルのオープン後に、IFILE_Seek 関数を使用してファイルのアクセス位置を変更します。
uint32 IFILE_Seek( IFile* file, // IFile インターフェイス FileSeekType seekType, // 移動の起点 int32 moveDistance // 移動量 );
ファイルのアクセス位置には、以下の値を指定します。
| 関数名 [BREW] | 処理概要 |
|---|---|
| _SEEK_CURRENT | 現在のファイルのアクセス位置を起点とします。 |
| _SEEK_START | ファイルの先頭を起点とします。 |
| _SEEK_END | ファイルの末尾を起点とします。 |
SophiaFramework では、 SFBFile::Seek 関数を使用します。
[ BREW API のみを使用したコード ]
//
// ファイルのアクセス位置を移動します。
//
IShell* shell = app->a.m_pishell;
IFileMgr* filemgr;
IFile* file;
char buffer[128];
int size;
// IFileMgr インターフェイスを作成します。
ISHELL_CreateInstance(shell, AEECLSID_FILEMGR, (void*)&filemgr);
// ファイルをオープンします。
file = ifilemgr_openfile(filemgr, "sample.txt", _ofm_read);
if (file != null) {
// ファイルのアクセス位置を変更します。
IFILE_Seek(file, _SEEK_START, 3);
// ファイルからデータを読み込みます。
size = ifile_read(file, buffer, sizeof(buffer) - 1);
if (size > 0) {
// 読み込んだファイルのデータを利用する処理
・
・
・
}
// ファイルをクローズします。
IFILE_Release(file);
}
// IFileMgr インターフェイスを破棄します。
IFILEMGR_Release(filemgr);
[ SophiaFramework を使用したコード ]
// // ファイルのアクセス位置を移動します。 // SFBFileMgrSmp filemgr; SFBFileSmp file; AChar buffer[128]; SInt32 size; // SFBFileMgr インスタンスを作成します。 filemgr = sfbfilemgr::newinstance(); // ファイルをオープンします。 file = filemgr->openfile("sample.txt", _ofm_read); if (file != null) { // ファイルのアクセス位置を変更します。 file->Seek(_SEEK_START, 3); // ファイルからデータを読み込みます。 size = file->read(buffer, sizeof(buffer) - 1); if (size > 0) { // 読み込んだファイルのデータを利用する処理 ・ ・ ・ } }









