itsukichang

フロントエンドが得意なエンジニア.ダーツと旅行とギターが好き

AIRのFileクラスが使用するディレクトリについてのメモ②

前回の記事AIRのFileクラスが使用するディレクトリについてのメモ - いつきの技的日記の補足.
ディレクトリ参照するためのプロパティの具体的なpath例を調べてみた.
ちなみにMac版ね.

おさらい

  • File.applicationStorageDirectory - インストールされている各 AIR アプリケーションごとに固有の記憶領域ディレクト
  • File.applicationDirectory - アプリケーションがインストールされている(インストールされるアセットがある場合はそれらも含まれる)読み取り専用ディレクト
  • File.desktopDirectory - ユーザーのデスクトップディレクト
  • File.documentsDirectory - ユーザーのドキュメントディレクト
  • File.userDirectory - ユーザーディレクト
File - Adobe ActionScript® 3(AS3 )API リファレンス

実験

var fileName = "sample.txt";
var file:File;

file = File.applicationStorageDirectory.resolvePath(fileName);
trace(file.nativePath);

file = File.applicationDirectory.resolvePath(fileName);
trace(file.nativePath);

file = File.desktopDirectory .resolvePath(fileName);
trace(file.nativePath);

file = File.documentsDirectory .resolvePath(fileName);
trace(file.nativePath);

file = File.userDirectory.resolvePath(fileName);
trace(file.nativePath);
  • 出力結果
//applicationStorageDirectory 
/Users/[ユーザ名]/Library/Preferences/[アプリ名]/Local Store/Sample.txt

//applicationDirectory
/Users/[ユーザ名]/[作業ディレクトリ]/Sample.txt

//desktopDirectory
/Users/[ユーザ名]/Desktop/Sample.txt

//documentsDirectory
/Users/[ユーザ名]/Documents/Sample.txt

//userDirectory
/Users/[ユーザ名]/Sample.txt

ただし,これはIDEとかでコンパイルしたときの結果.
AIRアプリとして吐き出してインストールすると,applicationDirectoryが変わるので注意

//AIRアプリとしてインストールした時のapplicationDirectory
/Applications/[アプリ名]/Contents/Resources/Sample.txt

ただこのディレクトリは読み取り専用なのだ.

applicationDirectoryに書き込みたい時

AIRアプリケーションでは、File.applicationDirectory (インストールされたアプリケーションファイルが格納されているフォルダ)配下のファイルは、読み込むことはできるが、書き込んだりディレクトリを作成しようとするとセキュリティエラーが発生してしまう。

しかし、「file = new File(file.nativePath)」というように同じパスを指すファイルオブジェクトを作成し直すと、セキュリティエラーは発生しなくなる。

http://www.fores.jp/labs/wiki/index.php?applicationDirectory%E9%85%8D%E4%B8%8B%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

パブリッシュ時にリソース含めると,File.applicationDirectoryに入るので,こうやってpathとるとアクセスが楽です.