Adobe AIRで作るデスクトップアプリケーション

第7回 ファイルシステムAPI(その1)

この記事を読むのに必要な時間:およそ 4 分

ファイルやディレクトリへのアクセス

ブラウザ上で実行されるウェブアプリケーションがローカルファイルへのアクセスを制限されているのに対し,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";

著者プロフィール

タナカヤスヒロ

早稲田大学卒業後,DTP業務を経てマルチメディア系制作会社へ。Macromedia Directorにのめり込む。フリーランスとなりFlashにシフトしてからもデスクトップ絡みの仕事が絶えず,Apolloにも勝手に縁を感じている。現在株式会社antsに所属。ants Lab.にも記事を上げている。

URLhttp://labs.anthill.jp/

著書

コメント

コメントの記入