AIRのFileクラスが使用するディレクトリについてのメモ②
前回の記事AIRのFileクラスが使用するディレクトリについてのメモ - いつきの技的日記の補足.
ディレクトリ参照するためのプロパティの具体的なpath例を調べてみた.
ちなみにMac版ね.
おさらい
File - Adobe ActionScript® 3(AS3 )API リファレンス
- File.applicationStorageDirectory - インストールされている各 AIR アプリケーションごとに固有の記憶領域ディレクトリ
- File.applicationDirectory - アプリケーションがインストールされている(インストールされるアセットがある場合はそれらも含まれる)読み取り専用ディレクトリ
- File.desktopDirectory - ユーザーのデスクトップディレクトリ
- File.documentsDirectory - ユーザーのドキュメントディレクトリ
- File.userDirectory - ユーザーディレクトリ
実験
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とるとアクセスが楽です.