itsukichang

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

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

AIRでFileクラスを使えばディレクトリへのパスを扱うことができる.
FileStreamクラスと組み合わせたらファイルの読み書きができたり.

で,adobeのリファレンス(File - Adobe ActionScript® 3(AS3 )API リファレンス)を読むと,Fileクラスには共通的に使用されるディレクトリの場所を参照するための静的プロパティがあるとのこと.

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

まぁ当然OS毎に違うんだけど,この「アプリケーションがインストールされてる..」ってどこやねん!ってなった.
調べたらOSごとの保存場所が書いてあるblogがあったので引用めもめも.

C:Users[ユーザー]AppDataRoaming[AIRアプリID]Local Store

C:Documents and Settings[ユーザー]Application Data[AIRアプリID]Local Store

Macintosh HD/Users/[ユーザー]/Library/Preferences/[AIRアプリID]/Local Store/

http://keyframe.co.jp/blog/archives/647

ついでに

その保存したものへのアクセスも当然したくなると思うんですけど,上にある絶対パスををいちいち打ち込んで指定するのも単調でダサいので,もっと簡単な方法を.
sample.txtってのをapplicationStorageDirectory,つまりアプリケーション毎の固有記憶領域に保存して,それへのパスを簡単に取りたい時のコードが以下.

var fileName:String = "sample.txt";
var file:File = File.applicationStorageDirectory.resolvePath(fileName);
trace( file.nativePath);

file.nativePathが肝.
こうすると,「/Users/[userName]/Library/Preferences/[appName]/Local Store/sample.txt」みたいなパスが取れる.