Praca z katalogami

Adobe AIR 1.0 i starsze wersje

Ś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 .