ランタイムには、ローカルファイルシステム上のディレクトリを操作する機能が用意されています。
ディレクトリを参照する File オブジェクトの作成について詳しくは、
File オブジェクトでのディレクトリの参照
を参照してください。
ディレクトリの作成
File.createDirectory()
メソッドを使用して、ディレクトリを作成することができます。例えば、次のコードでは、ユーザーのホームディレクトリのサブディレクトリとして AIR Test というディレクトリを作成します。
var dir:File = File.userDirectory.resolvePath("AIR Test");
dir.createDirectory();
既にそのディレクトリが存在する場合、
createDirectory()
メソッドでは何も行われません。
また、一部のモードでは、FileStream オブジェクトでファイルを開くときにもディレクトリが作成されます。FileStream インスタンスの作成時に
FileStream()
コンストラクターの
fileMode
パラメーターを
FileMode.APPEND
または
FileMode.WRITE
に設定すると、存在しない場合にディレクトリが作成されます。詳しくは、
ファイルの読み取りと書き込みのワークフロー
を参照してください。
一時ディレクトリの作成
File クラスの
createTempDirectory()
メソッドを使用すると、次のように、システムの一時ディレクトリフォルダーにディレクトリを作成できます。
var temp:File = File.createTempDirectory();
createTempDirectory()
メソッドでは、一意の一時ディレクトリが自動的に作成されます(そのため、新しい一意の場所を指定する手間が省けます)。
一時ディレクトリは、アプリケーションのセッションに使用される一時ファイルを一時的に格納するために使用できます。システムの一時ディレクトリに新しい一意の一時ファイルを作成するための
createTempFile()
メソッドも用意されています。
一時ディレクトリはすべてのデバイスで自動的に削除されるわけではないので、アプリケーションを終了する前に削除する必要がないか確認してください。
ディレクトリの列挙
File オブジェクトの
getDirectoryListing()
メソッドまたは
getDirectoryListingAsync()
メソッドを使用すると、ディレクトリ内のファイルおよびサブフォルダーを参照する File オブジェクトの配列を取得することができます。
例えば、次のコードでは、ユーザーのドキュメントディレクトリの内容の一覧を出力します(サブディレクトリの内容は確認されません)。
var directory:File = File.documentsDirectory;
var contents:Array = directory.getDirectoryListing();
for (var i:uint = 0; i < contents.length; i++)
{
trace(contents[i].name, contents[i].size);
}
このメソッドの非同期バージョンを使用した場合は、
directoryListing
イベントオブジェクトの
files
プロパティに、ディレクトリに関連する File オブジェクトの配列が格納されます。
var directory:File = File.documentsDirectory;
directory.getDirectoryListingAsync();
directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);
function dirListHandler(event:FileListEvent):void
{
var contents:Array = event.files;
for (var i:uint = 0; i < contents.length; i++)
{
trace(contents[i].name, contents[i].size);
}
}
ディレクトリのコピーおよび移動
ファイルをコピーまたは移動する場合と同じメソッドを使用して、ディレクトリをコピーまたは移動することができます。例えば、次のコードでは、同期的にディレクトリがコピーされます。
var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test");
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy");
sourceDir.copyTo(resultDir);
copyTo()
メソッドの
overwrite
パラメーターに true を指定すると、既存のターゲットディレクトリにあるすべてのファイルおよびフォルダーが削除され、ソースディレクトリ内のファイルおよびフォルダーに置き換えられます(ターゲットファイルがソースディレクトリに存在しない場合でも同様に処理されます)。
copyTo()
メソッドの
newLocation
パラメーターとして指定するディレクトリは、結果として生成されるディレクトリへのパスを指定するものであり、そのディレクトリを格納する親ディレクトリを指定するものではありません。
詳しくは、
ファイルのコピーおよび移動
を参照してください。
ディレクトリの内容の削除
File クラスの
deleteDirectory()
メソッドおよび
deleteDirectoryAsync()
メソッドを使用すると、ディレクトリを削除することができます。1 つ目のメソッドでは同期的に処理が行われ、2 つ目のメソッドでは非同期で処理が行われます(
AIR ファイルの基礎
を参照)。どちらのメソッドにも
deleteDirectoryContents
パラメーター(Boolean 型)があり、メソッドの呼び出しでこのパラメーターが
true
に設定されている場合は空ではないディレクトリが削除され、
false
(デフォルト値)の場合は空のディレクトリだけが削除されます。
例えば、次のコードでは、ユーザーのドキュメントディレクトリの AIR Test サブディレクトリが同期的に削除されます。
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.deleteDirectory(true);
次のコードでは、ユーザーのドキュメントディレクトリの AIR Test サブディレクトリが非同期で削除されます。
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.addEventListener(Event.COMPLETE, completeHandler)
directory.deleteDirectoryAsync(true);
function completeHandler(event:Event):void {
trace("Deleted.")
}
また、
moveToTrash()
メソッドおよび
moveToTrashAsync()
メソッドを使用すると、ディレクトリをシステムのごみ箱に移動することもできます。詳しくは、
ごみ箱へのファイルの移動
を参照してください。
|
|
|