* applicationDirectory配下のファイルにアクセスする方法 [#t28bc557]
- AIRアプリケーションでは、File.applicationDirectory (インストールされたアプリケーションファイルが格納されているフォルダ)配下のファイルは、読み込むことはできるが、書き込んだりディレクトリを作成しようとするとセキュリティエラーが発生してしまう。
- しかし、「file = new File(file.nativePath)」というように同じパスを指すファイルオブジェクトを作成し直すと、セキュリティエラーは発生しなくなる。
- この現象は、おそらくAIRのセキュリティチェックがファイルのパスに対してではなく、URLに対して行われているためだと考えられる。 &br;
File.applicationDirectoryを基準にして作成したファイルオブジェクトでは、URLが「app:xxx」となる。 &br;
それに対して、パスを指定して作成したファイルオブジェクトでは、URLが「file:xxx」となる。
- &color(#FF0000){''ただし、AIRアプリケーションのアンインストール時には、自分で作成したファイルは削除されないのでそのまま残ってしまうという欠点がある。''}; &br;
&color(#FF0000){''さらに悪いことに、もう一度同じAIRアプリケーションをインストールしようとした場合、インストール先のディレクトリが残ったままだとインストールに失敗してしまうので要注意。''};

- サンプルプログラム
-- エラーが発生するパターン
#highlighter(as){{
//applicationDirectory配下の「hogeDir」を表すファイルオブジェクトを生成
var file :File = File.applicationDirectory.resolvePath("hogeDir");

//ディレクトリを作成する
file.createDirectory();
}}
#br
-- エラーが発生しないパターン
#highlighter(as){{
//applicationDirectory配下の「hogeDir」を表すファイルオブジェクトを生成
var file :File = File.applicationDirectory.resolvePath("hogeDir");

//そのままではエラーが発生するので、nativePathを元にしてファイルオブジェクトを作成し直す
file = new File(file.nativePath);

//ディレクトリを作成する
file.createDirectory();
}}
&br;

-----
[[AIR関連の技術情報に戻る>AIR関連の技術情報]]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS