|
IT総合情報ポータル「ITmedia」 |
ITとビジネスのニュース専門サイト「ITmedia News」 |
企業のためのIT情報サイト「ITmedia エンタープライズ」 |
IT製品導入支援サイト「TechTargetジャパン」 |
経営者とCIOのコミュニティー「ITmedia エグゼクティブ」 |
PCとMacの専門サイト「ITmedia +D PC USER」 |
携帯、スマートフォンの専門サイト「ITmedia +D Mobile」 |
電子書籍の専門サイト「ITmedia eBook USER」 |
デジカメの専門サイト「ITmedia デジカメプラス」 |
AV機器の専門サイト「ITmedia +D LifeStyle」 |
旬なモノネタ「ITmedia ガジェット」 |
ニコ生、Ustreamの動画番組表「ライブガイド」 |
ビジネスブログ・メディア「ITmedia オルタナティブ・ブログ」 |
ちょっと気になるネットの話題「ねとらぼ」
BREW プログラミング入門(8)
|
| 関数名 | 解説 |
| IFILEMGR_EnumInit | ディレクトリやファイルの列挙を行うためにインタフェースを初期化します。 |
| IFILEMGR_EnumNext | 列挙中の次のディレクトリやファイルの情報を取得します。 |
| IFILEMGR_EnumNextEx | 列挙中の次のディレクトリやファイルの拡張情報を取得します。 |
| IFILEMGR_GetInfo | 名前で指定されたディレクトリやファイルの情報を取得します。 |
| IFILEMGR_GetInfoEx | 名前で指定されたディレクトリやファイルの拡張情報を取得します。 |
| IFILEMGR_MkDir | ディレクトリを作成します。 |
| IFILEMGR_RmDir | ディレクトリを削除します。 |
| IFILEMGR_OpenFile | ファイルを開きます。 |
| IFILEMGR_Remove | ファイルを削除します。 |
| IFILEMGR_Test | 指定された名前のディレクトリやファイルが存在するか確認します。 |
| IFILEMGR_Rename | ディレクトリやファイルの名前を変更します。 |
| IFILEMGR_GetFreeSpace | ファイルシステムで使用可能な空きバイト数を取得します。 |
| IFILEMGR_GetLastError | より詳しいエラー情報を取得します。 |
※上記表は、頻繁に使用されるAPIしか列挙していません。より詳しい情報はBREW APIリファレンスを参照してください。
ディレクトリを操作してみる
それでは上記APIを使用して、新しいディレクトリを作成した後、名前を変更してから削除してみましょう。まず、以下にコードを示します。
|
まず、IShellインタフェースを使用してIFileMgrインタフェースのオブジェクトを作成します。"new_dir"という名前のディレクトリを作成し、"temp_dir"という名前に変更した後、"temp_dir"という名前のディレクトリを削除しています。ここで注意点は、IFILEMGR_MkDir関数は既に同名のディレクトリが存在する場合でも成功したことを示す値を返します。またIFILEMGR_RmDir関数はディレクトリの中身が空の状態でないと正しく削除できません。よって、上記コードを実験する場合は、同名のディレクトリが存在しない環境で行う必要があります。
次に、深い階層のディレクトリを作成してみましょう。IFILEMGR_MkDir関数は存在しない親ディレクトリを再帰的に作成してはくれませんので、深い階層のディレクトリを作成するには親になる階層を逐一作成しなければなりません。
以下に3階層のディレクトリを作成するコードを示します。
|
上記のように、BREWではディレクトリやファイルのパスは絶対パスで指定します。カレントディレクトリなどの概念は存在しません。
ディレクトリやファイルを再帰的に列挙する方法
ファイルシステムの操作を行っていると、全てのディレクトリやファイルを再帰的に巡回して列挙したくなることがあります。また、IFILEMGR_RmDir関数は中身が完全に空でないと正常に削除できないため、再帰的な列挙はディレクトリの中身を空にすることにも利用できます。
|
上記コードはディレクトリを再帰的に巡回し、見つかったディレクトリやファイルをデバッグ出力に書き出します。最上位階層は "" で表現され、まず最上位階層から巡回を初めています。上記コードでは、ディレクトリごとにIFileMgrインタフェースを作成しているので少々動作が重いですが、一つのIFileMgrインタフェースを使いまわすとディレクトリごとにIFILEMGR_EnumInit関数が呼び出されるので正確な列挙を行えません。
一つの解決策として、一つのIFileMgrインタフェースを使いまわして、あらかじめファイルシステムの状態をメモリに記憶しておいて巡回する方法があります。
[堀口淳史, ITmedia]
Copyright© 2012 ITmedia, Inc. All Rights Reserved.
前のページ | 1/3 | 次のページ
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!