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