Работа с каталогамиAdobe AIR 1.0 и более новых версий Среда выполнения предоставляет возможности работы с каталогами в локальной файловой системе. Дополнительные сведения о создании объектов File, указывающих на каталоги, см. в разделе Объект File, указывающий на каталог. Создание каталоговМетод File.createDirectory() позволяет создать каталог. Например, в приведенном ниже коде создается каталог под названием «AIR Test», являющийся подкаталогом начального каталога пользователя: var dir:File = File.userDirectory.resolvePath("AIR Test");
dir.createDirectory();
Если каталог существует, метод createDirectory() не выполняет никаких действий. В некоторых моделях объект FileStream создает каталоги при открытии файлов. Отсутствующие каталоги создаются при создании экземпляра FileStream со значением параметра fileMode конструктора FileStream(), равным FileMode.APPEND или FileMode.WRITE. Дополнительные сведения см. в разделе «Последовательность действий при чтении и записи файлов». Создание временного каталогаКласс File включает метод createTempDirectory(), который создает во временном каталоге System еще один каталог, как показано ниже: var temp:File = File.createTempDirectory(); Метод createTempDirectory() автоматически создает уникальный временный каталог, что избавляет вас от необходимости каждый раз задавать уникальное расположение. Временный каталог может использоваться для хранения файлов, используемых в ходе одного сеанса приложения. Обратите внимание, что существует метод createTempFile(), позволяющий создавать новые уникальные временные файлы во временном каталоге System. Перед закрытием приложения рекомендуется удалять временные каталоги, так как они не удаляются автоматически на всех устройствах. Нумерация каталоговС помощью метода getDirectoryListing() или getDirectoryListingAsync() объекта File можно получить массив объектов 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);
Если задать для параметра overwrite метода copyTo() значение true, все файлы и папки в существующем целевом каталоге будут удалены и замещены файлами и папками исходного каталога (даже если в исходном каталоге нет целевого файла). Каталог, указанный в качестве параметра newLocation метода copyTo() задает путь к итоговому каталогу. Он не задаетродительский каталог, в котором будет содержаться итоговый. Дополнительные сведения см. в разделе Копирование и перемещение файлов. Удаление содержимого каталогаКласс File содержит методы deleteDirectory() и deleteDirectoryAsync(). Эти методы служат для удаления каталогов. Первый работает синхронно, второй — асинхронно (см. раздел «Основные сведения о файлах AIR»). Оба метода содержат параметр deleteDirectoryContents (который принимает булево значение). Когда этот параметр равен 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(), с помощью которых каталог можно поместить в корзину. Дополнительные сведения см. в разделе Перемещение файла в корзину. |
|