ファイルのアクセス位置を移動するには?
ファイルのアクセス位置を移動するには、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) { // 読み込んだファイルのデータを利用する処理 ・ ・ ・ } }