Środowisko wykonawcze udostępnia możliwości pracy z katalogami w lokalnym systemie plików.
Szczegółowe informacje na temat tworzenia obiektów File, które wskazują na katalogi, zawiera sekcja
Wskazywanie obiektu File na katalog
.
Tworzenie katalogów
Metoda
File.createDirectory()
służy do tworzenia katalogów. Przykład: poniższy kod tworzy katalog o nazwie AIR Test jako podkatalog katalogu osobistego użytkownika:
var dir:File = File.userDirectory.resolvePath("AIR Test");
dir.createDirectory();
Jeśli katalog istnieje, metoda
createDirectory()
nie wykonuje żadnej operacji.
Ponadto w niektórych trybach obiekt FileStream tworzy katalogi podczas otwierania plików. Brakujące katalogi są tworzone podczas tworzenia instancji FileStream za pomocą parametru
fileMode
konstruktora
FileStream()
, dla którego ustawiono
FileMode.APPEND
lub
FileMode.WRITE
. Więcej informacji zawiera sekcja
Przepływ pracy odczytu i zapisu plików.
.
Tworzenie katalogu tymczasowego
Klasa File zawiera metodę
createTempDirectory()
, która tworzy katalog w folderze tymczasowego katalogu dla systemu, jak w poniższym przykładzie:
var temp:File = File.createTempDirectory();
Metoda
createTempDirectory()
automatycznie tworzy unikalny katalog tymczasowy (dzięki czemu użytkownik nie musi określać nowej unikalnej lokalizacji).
Ten tymczasowy katalog może służyć do tymczasowego zapisu plików używanych dla sesji aplikacji. Istnieje również metoda
createTempFile()
przeznaczona do tworzenia nowych, unikatowych plików w katalogu tymczasowym systemu.
Przed zamknięciem aplikacji konieczne może być usunięcie katalogu tymczasowego, ponieważ
nie jest
on usuwany automatycznie na niektórych urządzeniach.
Wyliczanie katalogów
Za pomocą metody
getDirectoryListing()
lub metody
getDirectoryListingAsync()
obiektu File można uzyskać tablicę obiektów File wskazujących na pliki lub podfoldery w katalogu.
Przykład: poniższy kod zawiera listę zawartości katalogu dokumentów użytkownika (bez sprawdzania podkatalogów):
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);
}
Gdy używana jest asynchroniczna wersja metody, wówczas obiekt zdarzenia
directoryListing
zawiera właściwość
files
, która jest tablicą obiektów File odnoszących się do katalogów:
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);
}
}
Kopiowanie i przenoszenie katalogów
Katalog można skopiować lub przenieść, korzystając z tych samych metod, jakie są używane do kopiowania i przenoszenia plików. Przykład: poniższy kod kopiuje katalog synchronicznie:
var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test");
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy");
sourceDir.copyTo(resultDir);
Jeśli dla parametru
overwrite
metody
copyTo()
zostanie określona wartość true, wówczas wszystkie pliki i foldery istniejącego katalogu docelowego zostaną usunięte i zastąpione plikami i folderami z katalogu źródłowego (nawet jeśli plik docelowy nie istnieje w katalogu docelowym).
Katalog określony jako parametr
newLocation
metody
copyTo()
określa ścieżkę do istniejącego katalogu;
nie
określa katalogu
nadrzędnego
, który będzie zawierał katalog wynikowy.
Szczegółowe informacje zawiera sekcja
Kopiowanie i przenoszenie plików
.
Usuwanie zawartości katalogu
Klasa File zawiera metodę
deleteDirectory()
oraz metodę
deleteDirectoryAsync()
. Te metody służą do usuwania katalogów — pierwsza z nich działa synchronicznie, a druga działa asynchronicznie (patrz
Podstawowe informacje o plikach AIR
). Obydwie metody zawierają parametr
deleteDirectoryContents
(który przyjmuje wartość logiczną); jeśli dla tego parametru ustawiona jest wartość
true
(wartością domyślną jest
false
), wówczas wywołanie metody powoduje usunięcie niepustych katalogów; w przeciwnym wypadku usuwane są tylko puste katalogi.
Przykład: poniższy kod synchronicznie usuwa podkatalog AIR Test katalogu dokumentów użytkownika:
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.deleteDirectory(true);
Poniższy kod asynchronicznie usuwa podkatalog AIR Test katalogu dokumentów użytkownika:
var directory:File = File.documentsDirectory.resolvePath("AIR Test");
directory.addEventListener(Event.COMPLETE, completeHandler)
directory.deleteDirectoryAsync(true);
function completeHandler(event:Event):void {
trace("Deleted.")
}
Dostępne są również metody
moveToTrash()
i
moveToTrashAsync()
, które mogą służyć do przenoszenia katalogu do kosza systemu. Szczegółowe informacje zawiera sekcja
Przenoszenie pliku do kosza
.
|
|
|