ファイルの操作

Adobe AIR 1.0 およびそれ以降

AIR のファイル API を使用すると、ファイル操作の基本的な機能をアプリケーションに追加することができます。例えば、ファイルの読み取りおよび書き込み、ファイルのコピーおよび削除などを追加できます。アプリケーションからローカルファイルシステムにアクセスできるようになるので、まだ参照していない場合は AIR のセキュリティ を参照してください。

注意: ファイルの種類を AIR アプリケーションに関連付けることができます(これによりダブルクリックでアプリケーションを開けるようになります)。詳しくは、 ファイルの関連付けの管理 を参照してください。

ファイル情報の取得

File クラスには、File オブジェクトが参照するファイルまたはディレクトリに関する情報を示す以下のプロパティがあります。

File プロパティ

説明

creationDate

ローカルディスク上に存在するファイルの作成日です。

creator

使用されなくなりました。 extension プロパティを使用してください(このプロパティでは、ファイルの Mac OS クリエータータイプが報告されます。これは、Mac OS X より前のバージョンの Mac OS でのみ使用されます)。

downloaded

(AIR 2 以降)参照先のファイルまたはディレクトリが、インターネット経由でダウンロード済みであるかどうかを示します。プロパティは、ファイルにダウンロード済みのフラグを付けられるオペレーティングシステム(以下参照)でのみ意味を持ちます。

  • Windows XP Service Pack 2 以降および Windows Vista

  • Mac OS 10.5 以降

exists

参照先のファイルまたはディレクトリが存在するかどうかを表します。

extension

ファイル拡張子です。拡張子は、ファイル名の最後のドット(「.」)より後の部分です(ドットは含みません)。ファイル名にドットが含まれていない場合、extension は null になります。

icon

ファイルに対して定義されたアイコンを格納している Icon オブジェクトです。

isDirectory

File オブジェクトの参照先がディレクトリであるかどうかを表します。

modificationDate

ローカルディスク上に存在するファイルまたはディレクトリの最終変更日です。

name

ローカルディスク上に存在するファイルまたはディレクトリの名前です(ファイル拡張子も含みます(ファイル拡張子がある場合))。

nativePath

ホストオペレーティングシステムの表現形式に従った完全パスです。 File オブジェクトのパス を参照してください。

parent

File オブジェクトで表されるフォルダーまたはファイルが格納されているフォルダーです。このプロパティは、File オブジェクトがファイルシステムのルートにあるファイルまたはディレクトリを参照している場合は null になります。

size

ローカルディスク上に存在するファイルのサイズ(バイト単位)です。

type

使用されなくなりました。 extension プロパティを使用してください(Mac OS では、このプロパティは 4 文字で表されるファイルの種類になります。これは、Mac OS X より前のバージョンの Mac OS でのみ使用されます)。

url

ファイルまたはディレクトリの URL です。 File オブジェクトのパス を参照してください。

これらのプロパティについて詳しくは、『 Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド 』の File クラスの項を参照してください。

ファイルのコピーおよび移動

File クラスには、ファイルまたはディレクトリをコピーするためのメソッドとして、 copyTo() copyToAsync() という 2 つのメソッドがあります。また、ファイルまたはディレクトリを移動するためのメソッドとして、 moveTo() moveToAsync() という 2 つのメソッドがあります。 copyTo() メソッドと moveTo() メソッドでは同期的に処理が行われ、 copyToAsync() メソッドと moveToAsync() メソッドでは非同期で処理が行われます( AIR ファイルの基礎 を参照)。

ファイルをコピーまたは移動するには、2 つの File オブジェクトを設定します。1 つは、コピーまたは移動する対象のファイルを参照するオブジェクトで、このオブジェクトでコピーまたは移動メソッドを呼び出します。もう 1 つは、コピー先または移動先(結果)のパスを参照します。

次の例では、ユーザーのドキュメントディレクトリの AIR Test サブディレクトリにある test.txt ファイルを、copy.txt という名前で同じディレクトリにコピーします。

var original:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); 
var newFile:File = File.resolvePath("AIR Test/copy.txt"); 
original.copyTo(newFile, true); 

この例では、 copyTo() メソッドの overwrite パラメーター(2 番目のパラメーター)の値が true に設定されています。 overwrite true に設定することにより、既存のターゲットファイルが上書きされます。このパラメーターはオプションです。このパラメーターを false (デフォルト値)に設定した場合、ターゲットファイルが既に存在すると IOErrorEvent イベントが送出されます(ファイルはコピーされません)。

「非同期」バージョンのコピーメソッドおよび移動メソッドでは、非同期で処理が行われます。タスクの完了またはエラーの状態を監視するには、次のように addEventListener() を使用します。

var original = File.documentsDirectory; 
original = original.resolvePath("AIR Test/test.txt"); 
 
var destination:File = File.documentsDirectory; 
destination =  destination.resolvePath("AIR Test 2/copy.txt"); 
 
original.addEventListener(Event.COMPLETE, fileMoveCompleteHandler); 
original.addEventListener(IOErrorEvent.IO_ERROR, fileMoveIOErrorEventHandler); 
original.moveToAsync(destination); 
 
function fileMoveCompleteHandler(event:Event):void { 
    trace(event.target); // [object File] 
} 
function fileMoveIOErrorEventHandler(event:IOErrorEvent):void { 
    trace("I/O Error.");  
} 

File クラスには、ファイルまたはディレクトリをシステムのごみ箱に移動する File.moveToTrash() メソッドと File.moveToTrashAsync() メソッドもあります。

ファイルの削除

File クラスの deleteFile() メソッドおよび deleteFileAsync() メソッドを使用すると、ファイルを削除することができます。1 つ目のメソッドでは同期的に処理が行われ、2 つ目のメソッドでは非同期で処理が行われます( AIR ファイルの基礎 を参照)。

例えば、次のコードでは、ユーザーのドキュメントディレクトリにある test.txt ファイルが同期的に削除されます。

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.deleteFile(); 

次のコードでは、ユーザーのドキュメントディレクトリの test.txt ファイルが非同期で削除されます。

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.addEventListener(Event.COMPLETE, completeHandler) 
file.deleteFileAsync(); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

また、 moveToTrash() メソッドおよび moveToTrashAsync() メソッドを使用すると、ファイルまたはディレクトリをシステムのごみ箱に移動することもできます。詳しくは、 ごみ箱へのファイルの移動 を参照してください。

ごみ箱へのファイルの移動

File クラスの moveToTrash() メソッドおよび moveToTrashAsync() メソッドを使用すると、ファイルまたはディレクトリをシステムのごみ箱に送ることができます。1 つ目のメソッドでは同期的に処理が行われ、2 つ目のメソッドでは非同期で処理が行われます( AIR ファイルの基礎 を参照)。

例えば、次のコードでは、ユーザーのドキュメントディレクトリにある test.txt ファイルがシステムのごみ箱に同期的に移動されます。

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.moveToTrash(); 
注意: 回復可能なごみ箱フォルダーの概念をサポートしていないオペレーティングシステムでは、ファイルがすぐに削除されます。

一時ファイルの作成

File クラスの createTempFile() メソッドを使用すると、次のように、システムの一時ディレクトリフォルダーにファイルを作成できます。

var temp:File = File.createTempFile(); 

createTempFile() メソッドでは、一意の一時ファイルが自動的に作成されます(そのため、新しい一意の場所を指定する手間が省けます)。

一時ファイルは、アプリケーションのセッションで使用される情報を一時的に格納するために使用できます。システムの一時ディレクトリに一意の一時ディレクトリを作成するための createTempDirectory() メソッドも用意されています。

一時ファイルはすべてのデバイスで自動的に削除されるわけではないので、アプリケーションを終了する前に削除する必要がないか確認してください。