Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。3ファイルの一覧を取得するファイルの内容を読む最後に参考資料Fileプラグインを使うでは、早速プラグインを導入し、使い方を説明します。インストールインストールするプラグインは、「cordova-plugin-file」です。インストールはリスト1のように行います。APIと同じであっても、実装はプラグインで提供されている機能ですので、devicereadyイベントが発火された以降でしか利用できない点は忘れないようにして下さい。AndroidもしくはiOSで使えるディレクトリはcordova.fileオブジェクトの中にプロパティとして設定されますので、リスト2のように利用可能です。アプリケーションからは、これらのプロパティで取得できるパス配下のファイルだけを扱えます。app/www/js/controllers/FileReadController.jsの抜粋console.log(cordova.file.applicationDirectory);利用できるプロパティは、AndroidとiOSで多少異なりますが、表1はAndroidとiOSのいずれのOSでも利用できるプロパティです。アプリケーションがインストールされたディレクトリ。読込専用のディレクトリ。アプリケーションが利用するための基底となる読み書き可能なディレクトリ。利用するのではなく、その配下となるディレクトリを主に利用する。アプリケーションがファイルを永続的にデータを保存する為のディレクトリ。Androidの場合には「データを消去」で削除可能。アプリケーションががキャッシュとしてデータを保存する為のディレクトリ。Androidの場合には「キャッシュを消去」で削除可能このディレクトリ以外に、iOSであればiCloudに保存するためのディレクトリや、AndroidであればSDカードに保存するためのディレクトリなど、OS特有のディレクトリがあります。ハイブリッドアプリとして共通の処理の実装にする場合には、上記ディレクトリを覚えておけば問題ありません。Layoutsを参照してください。図1は、サンプルアプリを実行し、各プロパティを表示した結果です。ご自分のスマートフォンではどのようなパスになるのかを知りたい場合には、サンプルアプリを実行してみてください。cordova.fileのプロパティ値Fileを操作する流れJavaScriptでファイル操作をするには、提供されているメソッドが非同期型ということもあり、サーバサイドなどでファイル操作をするよりも手順が多少複雑になっています。少々、わかりにくいので全体の流れを図2に示します。ファイル、ディレクトリを操作する流れファイル情報を取得するには、リスト3に示す2つのメソッドがあります。これらのメソッドがファイルを扱う場合に最初に実行するメソッドです。);これらのメソッドのsuccessCallbackの結果から取得できるFile情報(Entry)オブジェクトを利用し、ファイルの操作を行うのが共通の流れになります。requestFileSystemメソッドは、先ほど、紹介したcordova.fileで取得できるパスを指定するのではなく、恒久的な領域、もしくは一時的な領域のみのいずれかのみが指定可能で、表2に示す引数が指定できます。指定した容量が空いているかをチェック。続いて、resolveLocalFileSystemURIメソッドの引数を表3に示します。こちらのメソッドではpathを指定しますが、cordova.fileで取得できるパスもしくはその配下を指定します。エラー時に呼ばれるコールバック関数どちらのメソッドを使えばよいか迷った際には、resolveLocalFileSystemURIメソッドを使えばよいでしょう。現在のスマホの容量を考慮すれば、事前に容量のチェックを行う必要があるような大きなファイルを扱う事はまれだと思います。resolveLocalFileSystemURIでは実際に保存する先のパスを指定できるのでより細かい操作が行えます。本サンプルでもこちらのメソッドを利用して実際の使い方を紹介しますファイル、ディレクトリを操作するEntryオブジェクト続いて、ファイル・ディレクトリ操作をするためのEntryオブジェクトの紹介します。先ほどのメソッドを利用して取得したパスがファイルなのか、ディレクトリなのかによってFileEntryもしくはDirectoryEntryのようにオブジェクトの実体は変わります。表4はEntryのプロパティ一覧で、FileEntryとDirectoryEntryで共通となります。パスやそのパスがファイルなのか、ディレクトリなのかなどのチェックできるようなプロパティが管理されています。このEntryを読んだ時のFileSystemオブジェクト続いてメソッドを紹介します。実際に扱うパスがファイル、もしくはディレクトリによって行いたい事も変わりますので、メソッドもそれぞれ別に用意されています。取得したパスがディレクトリの場合(DirectoryEntryオブジェクト)のメソッドは表5のようになります。配下のEntryを再帰的に削除します取得したパスがファイルの場合(FileEntryオブジェクト)のメソッドは表6のようになります。Fileオブジェクトを取得する。ファイルの削除ここで紹介したプロパティやメソッドでおおよその目的は実現できますが、紹介していないメソッドもありますので、もっと詳しく知りたい方は、HTML5関連の書籍や、MDNのようなサイトを参照してみると良いでしょう。先ほども説明したとおり通常のWebアプリなどでは利用できないことからドキュメントなども日本語になっていないなど、あまり情報は整備されているとは言えず、他の情報も含めて探してみると良いでしょう。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Technologies。執筆コミュニティ「WINGSプロジェクト」代表。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。