Symbian OSアプリ開発の手引き

Symbian OSアプリ開発の手引き(6)

Symbian OSのファイル操作を悩まずに使いこなす

大久保 潤 管理工学研究所 2008/10/8

- PR -

カレントパス

 パス周りをもう少し続けます。

 表3の#4のような文字列が渡されてきた場合、RFile::Open()はどこにあるファイルを開くのでしょうか。答えは、「RFsが管理している起点パスに対する相対パスとして解釈し、絶対パスに解決する」です。RFsが管理している起点となるパスをセッションパス(注7)といい、RFs::SetSesstionPath()メソッドで設定します。

  • RFsはファイルサーバに対する接続(セッション)でしたね。こんなところにクラサバベースであるところが出てきます。

注7:表1で説明したパス、ファイル名解析は、実はRFsでも提供されています(RFs::Parse())。このAPIはTParseシリーズと異なりカレントパスの補完を行ってくれます。

Exercise-2

 では、Exercise-2です。セッションパスの設定が効くことを確認するために、図2にあるECommand2ハンドラで行っているファイルのオープンを相対パス形式で行ってみましょう。ファイルをオープンするまでにRFs::SetSesstionPath()で必要なパスを設定するのがポイントとなります。パス文字列自体の生成はExercise-1の応用です(See TParseBase on DocBrowser)。

図4 Exercise-2 解答例

 どうでしょう。動きましたか? 上記コードだけでは、相対パスの補完にセッションパスを使っている証明として不十分です。RFs::SetSessionPath()に対してparser.DriveAndPath()を渡すのではなく、

_LIT( KFormatString, "c:\\nodir\\" );

という存在しないパスを設定して実行してみてください。何が起きるでしょうか。

ストリーム

 クラサバ編で行ったRFs、RFileの説明と今回の解説で、ファイル操作のあらましはお伝えできたと思います。では次回からいよいよGUI環境の解説に向かいます。お楽しみに!

 と終われればよいのですが、図2のコードにはまだ説明していないことが残っています。

図5 ECommand2ハンドラの未解説部分

 RFileからの読み出し結果をHBufCのインスタンスに直接受けるわけではなく、いったんRFileReadStreamというクラスのインスタンスを構築し、それ経由で値の設定を行っています。ここで用いられている機能はストリームといい、ファイル操作の上位に位置する概念です。Symbian OSではこの機能を用いてインスタンスの永続化処理を実現しています。では早速説明を、といきたいところなのですが、それには少々紙幅が足りないようです。うむむ……。

 ラッピングの仕方に差異はありますが、Symbian OSにおいてもごく一般的なファイル操作機能が提供されていることがお分かりいただけたと思います。ただし、これだけではインスタンスの永続化処理という、OO環境に必ずついて回る問題をうまく片付けることはできません。というわけで次回、GUIプログラミングの説明をお待ちの方には申し訳ないのですが、基本編にもう1回だけ誌面を使ってストリームの解説を行いたいと思います。(次回に続く)

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -