applicationDirectory配下のファイルにアクセスする方法

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


AIR関連の技術情報に戻る


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-31 (木) 16:16:51 (729d)