Adobe AIRで作るデスクトップアプリケーション
第7回 ファイルシステムAPI(その1)
ファイルやディレクトリへのアクセス
ブラウザ上で実行されるウェブアプリケーションがローカルファイルへのアクセスを制限されているのに対し,AIRアプリケーションは比較的自由にローカルファイルへアクセスできます。しかもプラットフォーム間の差異はAIR側で吸収してくれるので,デベロッパーが意識してコードを書き分ける必要もありません。
例として,デスクトップディレクトリにアクセスしてみましょう。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="test()">
<mx:Script>
<![CDATA[
import flash.filesystem.File;
private function test():void {
var dir:File = File.desktopDirectory;
trace(dir.nativePath);
}
]]>
</mx:Script>
</mx:WindowedApplication>
出力結果
Macintoshの場合:/Users/ユーザ名/Desktop Windowsの場合:C:\Documents and Settings\ユーザ名\デスクトップ
このように1つのコードで複数のプラットフォームに対応できるわけです。
ファイルやディレクトリの参照にはFileオブジェクトを使います。Fileクラスには,よく使う一般的なディレクトリが以下の静的プロパティとして定義されています。アプリケーションの設定ファイル等,ユーザの目に触れる必要のないデータはapplicationStorageDirectoryを使うとよいでしょう。
| applicationResourceDirectory:File | アプリケーションのリソースがインストールされているディレクトリ |
| applicationStorageDirectory:File | アプリケーション毎に割り当てられる保存用ディレクトリ |
| desktopDirectory:File | ユーザのデスクトップディレクトリ |
| documentsDirectory:File | ユーザのドキュメントディレクトリ |
| userDirectory:File | ユーザのホームディレクトリ |
nativePathプロパティは,Fileオブジェクトが参照しているファイルやディレクトリのフルパスです。前記の出力結果の通り,パスの表記はプラットフォームに依存したものが使われます。nativePathプロパティに直接値を代入してパスを指定することもできます。例えば,Windowsのマイ ドキュメント内にあるsample.txtを指定するには,次のように記述できます。
var file:File = new File();
file.nativePath = "C:\Documents and Settings\ユーザ名\My Documents\sample.txt";
※WindowsではnativePathプロパティのパスデリミタとして"\"の代わりに"/"を使うこともできます。Macintoshでは"/"のみです。
しかし,パスの先頭にはプロパティとして用意されたディレクトリを利用し,なるべく汎用性のあるコードにしたほうがよいでしょう。ディレクトリ下のパスは,resolve()メソッドを使って相対的に指定できます。
var dir:File = File.documentsDirectory;
var file:File = dir.resolve("sample.txt");
親ディレクトリは,resolve()メソッドで".."を指定するかparentプロパティを使って参照できます。次の2つは同じディレクトリになります。
var dir1:File = File.userDirectory.resolve("..");
var dir2:File = File.userDirectory.parent;
nativePathプロパティ対して,プラットフォームに依存しない形式のurlプロパティもあります。urlプロパティの場合は,"file://"等のURLスキームが使われます。
var dir:File = File.userDirectory;
trace(dir.url);
出力結果
Macintoshの場合:file:///Users/ユーザ名 Windowsの場合:file:///C:/Documents%20and%20Settings/ユーザ名
URLスキームは,標準的なfile以外に次のものがあります。
| app-resource | アプリケーションのリソースがインストールされているディレクトリを表す |
| app-storage | アプリケーション毎に割り当てられる保存用ディレクトリを表す |
applicationResourceDirectoryプロパティやapplicationStorageDirectoryプロパティの代わりにこれらを使ってアプリケーション固有のディレクトリにアクセスできます。
var file:File = new File();
file.url = "app-storage:/config/prefs.xml";


