Среда выполнения предоставляет возможности работы с каталогами в локальной файловой системе.
Дополнительные сведения о создании объектов 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()
, с помощью которых каталог можно поместить в корзину. Дополнительные сведения см. в разделе «
Перемещение файла в корзину
».
|
|
|