Praca z obiektami File w środowisku AIRAdobe AIR 1.0 i wersje późniejsze Obiekt File jest wskaźnikiem do pliku lub katalogu w systemie plików. Klasa File stanowi rozszerzenie klasy FileReference. Klasa FileReference, która jest dostępna w programie Adobe® Flash® Player, a także w programie AIR, reprezentuje wskaźnik do pliku, ale klasa File dodaje właściwości i metody, które nie są dostępne w programie Flash Player (w pliku SWF działającym w przeglądarce) z powodu zagadnień związanych z bezpieczeństwem. Informacje o klasie FileKlasa File może służyć do wykonywania następujących czynności:
Jeśli obiekt File wskazuje na ścieżkę pliku, można użyć go w celu odczytania lub zapisania danych pliku za pomocą klasy FileStream. Obiekt File może wskazywać na ścieżkę pliku lub katalog, który jeszcze nie istnieje. Taki obiekt File może zostać wykorzystany podczas tworzenia pliku lub katalogu. Ścieżki obiektów FileKażdy obiekt File ma dwie właściwości, które definiują jego ścieżkę:
Klasa File zawiera statyczne właściwości przeznaczone do wskazywania na standardowe katalogi w systemie Mac OS, Windows i Linux. Do właściwości tych należą:
Uwaga: Gdy platforma nie definiuje standardowych lokalizacji katalogów pulpitu, dokumentów ani użytkownika, właściwości File.documentsDirectory, File.desktopDirectory i File.userDirectory mogą odnosić się do tego samego katalogu.
Te właściwości mają różne wartości w różnych systemach operacyjnych. Na przykład w systemach Mac OS i Windows ścieżki do katalogu pulpitu użytkownika są różne. Na każdej platformie właściwość File.desktopDirectory wskazuję odpowiednią ścieżkę katalogu. Aby aplikacja działała prawidłowo na różnych platformach, należy używać tych właściwości w odwołaniach do innych katalogów i plików wykorzystywanych przez aplikację. Metoda resolvePath() umożliwia dalsze doprecyzowanie ścieżki. Na przykład ten kod wskazuje plik preferences.xml w katalogu przechowywania danych aplikacji: var prefsFile:File = File.applicationStorageDirectory;
prefsFile = prefsFile.resolvePath("preferences.xml");
Mimo że klasa File umożliwia wskazanie pliku w konkretnej ścieżce, postępowanie takie może doprowadzić do nieprawidłowego działania aplikacji na różnych platformach. Na przykład ścieżka C:\Documents and Settings\janek\ jest prawidłowa tylko w systemie Windows. Dlatego lepszym rozwiązaniem jest użycia właściwości statycznych klasy File, takich jak File.documentsDirectory.
Rzeczywiste ścieżki macierzyste tych katalogów zależą od systemu operacyjnego i konfiguracji komputera. Ścieżki przedstawione w tabeli są typowymi przykładami. Aby aplikacja prawidłowo działała na każdej platformie, do tych katalogów należy zawsze odnosić się za pomocą odpowiednich statycznych właściwości klasy File. W rzeczywistej aplikacji środowiska AIR wartości ID_aplikacji i nazwa_pliku pokazane w tabeli pochodzą z deskryptora aplikacji. Jeśli w deskryptorze aplikacji zostanie określony identyfikator wydawcy, wówczas w tych ścieżkach do identyfikatora aplikacji zostanie dodany identyfikator wydawcy. Wartość nazwa_uzytkownika jest nazwą konta użytkownika przeprowadzającego instalację. Widok katalogów w aplikacjach AIR dla urządzeń telewizyjnychW celu zapewnienia bezpieczeństwa systemu plików w środowisku AIR dla urządzeń telewizyjnych aplikacja AIR ma dostęp wyłącznie do ograniczonego zestawu katalogów. Środowisko AIR dla urządzeń telewizyjnych uniemożliwia aplikacji dostęp do innych katalogów. Ponadto środowisko AIR dla urządzeń telewizyjnych izoluje należące do każdego użytkownika dane specyficzne dla użytkownika dla każdej aplikacji środowiska AIR. Aplikacja AIR używa nazw katalogów przeznaczonych tylko do używania w języku ActionScript 3.0. Te nazwy nie przedstawiają rzeczywistych katalogów na urządzeniu. Środowisko AIR dla urządzeń telewizyjnych odwzorowuje te nazwy katalogów języka ActionScript 3.0 na rzeczywiste nazwy katalogów. To odwzorowanie chroni aplikacje AIR dla urządzeń telewizyjnych od złośliwego lub przypadkowego uzyskiwania dostępu do plików lokalnych innych użytkowników. Nazwy katalogów języka ActionScript 3.0:
Jeśli aplikacja próbuje uzyskać dostęp do zakazanego katalogu, środowisko wykonawcze zgłasza wyjątek, który można przechwycić w kodzie ActionScript. Poniższa tabela przedstawia wartość File.nativePath dla różnych metod i właściwości obiektu File. Wartości odzwierciedlają ograniczony widok aplikacji systemu plików urządzenia.
Należy również wziąć pod uwagę zachowanie następujących metod w środowisku AIR dla urządzeń telewizyjnych:
Wskazywanie obiektu File na katalogIstnieją różne sposoby konfigurowania obiektu File w taki sposób, aby wskazywał na katalog. Wskazywanie na katalog osobisty użytkownikaObiekt File może wskazywać na katalog osobisty użytkownika. Poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na podkatalog AIR Test katalogu osobistego: var file:File = File.userDirectory.resolvePath("AIR Test");
Wskazywanie na katalog dokumentów użytkownikaObiekt File może wskazywać na katalog dokumentów użytkownika. Poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na podkatalog AIR Test katalogu dokumentów: var file:File = File.documentsDirectory.resolvePath("AIR Test");
Wskazywanie na katalog na pulpicieObiekt File może wskazywać na katalog znajdujący się na pulpicie. Poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na podkatalog AIR Test znajdujący się na pulpicie: var file:File = File.desktopDirectory.resolvePath("AIR Test");
Wskazywanie na katalog zapisu aplikacjiObiekt File może wskazywać na katalog zapisu aplikacji. Dla każdej aplikacji AIR istnieje unikalna skojarzona ścieżka, która definiuje katalog zapisu aplikacji. Ten katalog jest unikalny dla każdej aplikacji i każdego użytkownika. W tym katalogu można zapisywać dane dot. aplikacji dla konkretnego użytkownika (np. dane użytkownika lub pliki preferencji). Przykład: poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na plik preferencji prefs.xml zawarty w katalogu zapisu aplikacji: var file:File = File.applicationStorageDirectory;
file = file.resolvePath("prefs.xml");
Lokalizacja katalogu zapisu aplikacji jest zazwyczaj oparta na nazwie użytkownika i identyfikatorze aplikacji. Podane poniżej lokalizacje w systemie plików mogą być pomocne przy debugowaniu aplikacji. Należy zawsze używać właściwości File.applicationStorage lub schematu URI app-storage: do sprawdzania plików w tym katalogu:
Uwaga: Jeśli dla aplikacji istnieje identyfikator wydawcy, wówczas identyfikator ten również jest używany jako część ścieżki do katalogu zapisu aplikacji.
Adres URL (i właściwość url) dla obiektu File utworzonego w katalogu File.applicationStorageDirectory korzysta ze schematu URL app-storage (patrz Schematy URL obsługiwane w środowisku AIR), co przedstawiono poniżej: var dir:File = File.applicationStorageDirectory;
dir = dir.resolvePath("preferences");
trace(dir.url); // app-storage:/preferences
Wskazywanie na katalog aplikacjiObiekt File może wskazywać na katalog, w którym została zainstalowana aplikacja — jest to tzw. katalog aplikacji. Za pomocą właściwości File.applicationDirectory można tworzyć dowołania do tego katalogu. Za pomocą tego katalogu można sprawdzić plik deskryptora aplikacji lub inne zasoby zainstalowane w aplikacji. Na przykład: poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na katalog images w katalogu aplikacji: var dir:File = File.applicationDirectory;
dir = dir.resolvePath("images");
Adres URL (i właściwość url) dla obiektu File utworzonego w File.applicationDirectory korzysta ze schematu URL app (patrz Schematy URL obsługiwane w środowisku AIR), co przedstawiono poniżej: var dir:File = File.applicationDirectory;
dir = dir.resolvePath("images");
trace(dir.url); // app:/images
Uwaga: W systemie Android nie można uzyskać dostępu do pakietu aplikacji za pomocą właściwości nativePath. Właściwość nativePath jest pustym ciągiem. Do uzyskiwania dostępu do plików w katalogu aplikacji należy używać adresu URL, a nie ścieżki macierzystej.
Wskazywanie katalogu głównego systemu plikówMetoda File.getRootDirectories() zawiera listę wszystkich woluminów głównych, takich jak C:, oraz woluminów podłączonych, w komputerze z systemem Windows. W systemie Mac OS i Linux ta metoda zawsze zwraca unikalny katalog główny komputera (katalog „/”). Metoda StorageVolumeInfo.getStorageVolumes() udostępnia bardziej szczegółowe informacje o podłączonych woluminach pamięci masowej (zobacz Praca z woluminami pamięci masowej). Uwaga: W systemie Android nie można odczytać katalogu głównego systemu plików. Obiekt File odwołujący się do katalogu za pomocą ścieżki macierzystej („/”) jest zwracany, ale właściwości tego obiektu nie mają dokładnych wartości. Na przykład właściwość spaceAvailable ma zawsze wartość 0.
Wskazywanie na katalog jawnyObiekt File może wskazywać na katalog jawny — w tym celu należy ustawić właściwość nativePath obiektu File, jak w poniższym przykładzie (w systemie Windows): var file:File = new File(); file.nativePath = "C:\\AIR Test"; Ważne: Wskazanie w opisany sposób konkretnej ścieżki może spowodować, że kod nie będzie przenośny między platformami. Poprzedni przykład działa tylko w systemie Windows. Aby wskazać katalog w sposób niezależny od platformy, należy użyć właściwości statycznych obiektu File, takich jak File.applicationStorageDirectory/ Następnie należy skorzystać z metody resolvePath() (opisanej w następnej sekcji) w celu przejścia do ścieżki względnej. Nawigacja do ścieżek względnychZa pomocą metody resolvePath() można uzyskiwać ścieżkę względną do określonej innej ścieżki. Na przykład: poniższy kod ustawia obiekt File w taki sposób, aby wskazywał na podkatalog „AIR Test” katalogu osobistego: var file:File = File.userDirectory;
file = file.resolvePath("AIR Test");
Można również użyć właściwości url obiektu File, aby wskazywał on na katalog na podstawie ciągu znaków URL, jak w poniższym przykładzie: var urlStr:String = "file:///C:/AIR Test/"; var file:File = new File() file.url = urlStr; Więcej informacji zawiera sekcja Modyfikowanie ścieżek File. Zezwalanie użytkownikowi na przeglądanie w celu wybrania kataloguKlasa File zawiera metodę browseForDirectory(), która powoduje wyświetlenie systemowego okna dialogowego, w którym użytkownik może wybrać podkatalog, jaki zostanie przypisany do obiektu. Metoda browseForDirectory() jest asynchroniczna. Wywołuje zdarzenie select, gdy użytkownik wybierze katalog i kliknie przycisk Otwórz, lub wywołuje zdarzenie cancel, gdy użytkownik kliknie przycisk Anuluj. Przykład: poniższy kod umożliwia użytkownikowi wybranie katalogu, a po wybraniu generuje ścieżkę katalogu: var file:File = new File();
file.addEventListener(Event.SELECT, dirSelected);
file.browseForDirectory("Select a directory");
function dirSelected(e:Event):void {
trace(file.nativePath);
}
Uwaga: W systemie Android metoda browseForDirectory() nie jest obsługiwana. Wywołanie tej metody nie daje żadnego efektu — jest natychmiast wywoływane anulowanie zdarzenia. Aby użytkownicy mogli wybrać katalog, należy zamiast tego użyć własnego, zdefiniowanego w aplikacji okna dialogowego.
Wskazywanie na katalog, z którego aplikacja została wywołanaW celu uzyskania lokalizacji katalogowej, z której aplikacja została wywołana, należy sprawdzić wartość właściwości currentDirectory obiektu InvokeEvent wywołanego przy wywołaniu aplikacji. Szczegółowe informacje zawiera sekcja Przechwytywanie argumentów wiersza poleceń. Wskazywanie obiektu File na plikIstnieją różne sposoby ustawiania pliku, na który ma wskazywać obiekt File. Wskazywanie na jawną ścieżkę plikuWażne: Wskazanie konkretnej ścieżki może spowodować, że kod nie będzie przenośny między platformami. Na przykład ścieżka C:/foo.txt jest prawidłowa tylko w systemie Windows. Aby wskazać katalog w sposób niezależny od platformy, należy użyć właściwości statycznych obiektu File, takich jak File.applicationStorageDirectory/ Następnie należy skorzystać z metody resolvePath() (zobacz Modyfikowanie ścieżek File) w celu przejścia do ścieżki względnej. Można użyć właściwości url obiektu File, aby wskazywał on na plik lub katalog na podstawie ciągu znaków URL, jak w poniższym przykładzie: var urlStr:String = "file:///C:/AIR Test/test.txt"; var file:File = new File() file.url = urlStr; Możliwe jest również przekazanie adresu URL do funkcji konstruktora File(), jak w poniższym przykładzie: var urlStr:String = "file:///C:/AIR Test/test.txt"; var file:File = new File(urlStr); Właściwość url zawsze zwraca zakodowaną wersję URL (na przykład: spacje zastąpione znakami "%20): file.url = "file:///c:/AIR Test"; trace(file.url); // file:///c:/AIR%20Test W celu ustawienia ścieżki jawnej obiektu File można również użyć właściwości nativePath. Przykład: poniższy kod uruchomiony w komputerze z systemem Windows ustawia obiekt File na plik test.txt w podkatalogu AIR Test na dysku C: var file:File = new File(); file.nativePath = "C:/AIR Test/test.txt"; Tę ścieżkę można również przekazać do funkcji konstruktora File(), co przedstawiono poniżej: var file:File = new File("C:/AIR Test/test.txt");
Jako ogranicznika elementów ścieżki we właściwości nativePath należy używać ukośnika (/). W systemie Windows dozwolone jest także użycie ukośnika odwrotnego (\), jednak użycie tego znaku powoduje, że aplikacja nie będzie przenośna między platformami. Więcej informacji zawiera sekcja Modyfikowanie ścieżek File. Wyliczanie plików w kataloguZa pomocą metody getDirectoryListing() obiektu File można uzyskać tablicę obiektów File wskazujących na pliki i podkatalogi na najwyższym poziomie katalogu. Więcej informacji zawiera sekcja Wyliczanie katalogów. Zezwalanie użytkownikowi na przeglądanie w celu wybrania plikuKlasa File zawiera następujące metody, które powodują wyświetlenie systemowego okna dialogowego, w którym użytkownik może wybrać plik, jaki zostanie przypisany do obiektu:
Każda z tych metod jest asynchroniczna. Metody browseForOpen() i browseForSave() wywołują zdarzenie select, gdy użytkownik wybierze plik (lub ścieżkę docelową w przypadku metody browseForSave()). W przypadku metod browseForOpen() i browseForSave() wybranie powoduje, że docelowy obiekt File wskazuje na wybrane pliki. Metoda browseForOpenMultiple() wywołuje zdarzenie selectMultiple, gdy użytkownik wybierze pliki. Zdarzenie selectMultiple jest typu FileListEvent, który zawiera właściwość files będącą tablicą obiektów File (wskazują na wybrane pliki). Przykład: poniższy kod powoduje wyświetlenie okna dialogowego „Otwórz”, w którym użytkownik może wybrać plik: var fileToOpen:File = File.documentsDirectory;
selectTextFile(fileToOpen);
function selectTextFile(root:File):void
{
var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml");
root.browseForOpen("Open", [txtFilter]);
root.addEventListener(Event.SELECT, fileSelected);
}
function fileSelected(event:Event):void
{
trace(fileToOpen.nativePath);
}
Jeśli aplikacja zawiera inne okno dialogowe przeglądarki, które zostało otwarte po wywołaniu metody przeglądania, wówczas podczas wykonywania zwracany jest wyjątek Error. Modyfikowanie ścieżek FileŚcieżkę istniejącego obiektu File można również zmodyfikować poprzez wywołanie metody resolvePath() albo modyfikację właściwości nativePath lub url obiektu, jak w poniższych przykładach (w systemie Windows): var file1:File = File.documentsDirectory;
file1 = file1.resolvePath("AIR Test");
trace(file1.nativePath); // C:\Documents and Settings\userName\My Documents\AIR Test
var file2:File = File.documentsDirectory;
file2 = file2.resolvePath("..");
trace(file2.nativePath); // C:\Documents and Settings\userName
var file3:File = File.documentsDirectory;
file3.nativePath += "/subdirectory";
trace(file3.nativePath); // C:\Documents and Settings\userName\My Documents\subdirectory
var file4:File = new File();
file4.url = "file:///c:/AIR Test/test.txt";
trace(file4.nativePath); // C:\AIR Test\test.txt
Jako znaku separującego katalogi we właściwości nativePath należy używać ukośnika (/). W systemie Windows dozwolone jest także użycie ukośnika odwrotnego (\), jednak użycie go spowoduje, że aplikacja nie będzie przenośna między platformami. Schematy URL obsługiwane w środowisku AIRW programie AIR podczas definiowania właściwości url obiektu File można korzystać z następujących schematów URL:
Znajdowanie ścieżki względnej między dwoma plikamiMetoda getRelativePath() służy do wyszukiwania ścieżki względnej między dwoma plikami: var file1:File = File.documentsDirectory.resolvePath("AIR Test");
var file2:File = File.documentsDirectory
file2 = file2.resolvePath("AIR Test/bob/test.txt");
trace(file1.getRelativePath(file2)); // bob/test.txt
Drugi parametr metody getRelativePath() — parametr useDotDot — umożliwia zwrot składni .. w wynikach w celu oznaczenia katalogów nadrzędnych: var file1:File = File.documentsDirectory;
file1 = file1.resolvePath("AIR Test");
var file2:File = File.documentsDirectory;
file2 = file2.resolvePath("AIR Test/bob/test.txt");
var file3:File = File.documentsDirectory;
file3 = file3.resolvePath("AIR Test/susan/test.txt");
trace(file2.getRelativePath(file1, true)); // ../..
trace(file3.getRelativePath(file2, true)); // ../../bob/test.txt
Uzyskiwanie kanonicznych wersji nazw plikówW systemach Windows i Mac OS w nazwach plików i ścieżek nie jest rozróżniana wielkość liter. W poniższym kodzie dwa obiekty File wskazują na ten sam plik: File.documentsDirectory.resolvePath("test.txt");
File.documentsDirectory.resolvePath("TeSt.TxT");
Jednak nazwy dokumentów i katalogów mogą zawierać wielkie litery. Przykład: w poniższym kodzie obowiązuje założenie, że istnieje folder AIR Test w katalogu documents, jak w poniższych przykładach: var file:File = File.documentsDirectory.resolvePath("AIR test");
trace(file.nativePath); // ... AIR test
file.canonicalize();
trace(file.nativePath); // ... AIR Test
Metoda canonicalize() konwertuje obiekt nativePath w celu użycia poprawnej wielkości liter dla nazwy pliku i katalogu. W systemach, w których jest rozróżniana wielkość liter (np. w systemie Linux), gdy istnieje wiele plików z nazwami różniącymi się jedynie wielkością liter metoda canonicalize() dostosowuje ścieżkę, tak aby była zgodna z pierwszym znalezionym plikiem (w kolejności określonej przez system plików). Metoda canonicalize() może również służyć do konwertowania krótkich nazw plików (nazwy „8.3”) na długie nazwy plików w systemie Windows, jak w poniższych przykładach: var path:File = new File(); path.nativePath = "C:\\AIR~1"; path.canonicalize(); trace(path.nativePath); // C:\AIR Test Praca z pakietami i dowiązaniami symbolicznymiRóżne systemy operacyjne obsługują pliki pakietów oraz pliki dowiązań symbolicznych: Pakiety W systemie Mac OS katalogi mogą być ustawiane jako pakiety i mogą być widoczne w narzędziu Finder systemu Mac OS jako pojedynczy plik, a nie katalog. Dowiązania symboliczne W systemach Mac OS, Linux i Windows Vista dowiązania symboliczne są obsługiwane. Dowiązania symboliczne umożliwiają plikowi na wskazywanie innego pliku lub katalogu na dysku. Istnieją pewne podobieństwa, jednak dowiązania nie są aliasami. Alias jest zawsze zgłaszany jako plik (a nie katalog), a odczyt z aliasu i zapis do aliasu lub skrótu nigdy nie wpływa na oryginalny plik lub katalog, na który on wskazuje. Z drugiej strony dowiązanie symboliczne działa dokładnie, jak plik lub katalog, na który wskazuje. Może być zgłaszane jako plik lub katalog, a odczyt dowiązania lub zapis do dowiązania wpływa na plik lub katalog, na który wskazuje, a nie na dowiązanie symboliczne. Ponadto w systemach Windows właściwość isSymbolicLink obiektu File odwołująca się do punktu połączenia (używanego w systemie plików NTFS) jest ustawiona na wartość true. Klasa File zawiera właściwości isPackage i isSymbolicLink umożliwiające sprawdzenie, czy obiekt File odwołuje się do pakietu lub dowiązania symbolicznego. Poniższy kod przechodzi przez katalog na pulpicie, prezentując podkatalogi, które nie są pakietami: var desktopNodes:Array = File.desktopDirectory.getDirectoryListing();
for (var i:uint = 0; i < desktopNodes.length; i++)
{
if (desktopNodes[i].isDirectory && !!desktopNodes[i].isPackage)
{
trace(desktopNodes[i].name);
}
}
Poniższy kod przechodzi przez katalog na pulpicie, prezentując pliki i podkatalogi, które nie dowiązaniami symbolicznymi: var desktopNodes:Array = File.desktopDirectory.getDirectoryListing();
for (var i:uint = 0; i < desktopNodes.length; i++)
{
if (!desktopNodes[i].isSymbolicLink)
{
trace(desktopNodes[i].name);
}
}
Metoda canonicalize() zmienia ścieżkę dowiązania symbolicznego w taki sposób, aby wskazywała na plik lub katalog, do którego odwołuje się dowiązanie. Poniższy kod przechodzi przez katalog na pulpicie i zgłasza ścieżki, do których odwołują się pliki będące dowiązaniami symbolicznymi: var desktopNodes:Array = File.desktopDirectory.getDirectoryListing();
for (var i:uint = 0; i < desktopNodes.length; i++)
{
if (desktopNodes[i].isSymbolicLink)
{
var linkNode:File = desktopNodes[i] as File;
linkNode.canonicalize();
trace(linkNode.nativePath);
}
}
Określanie ilości miejsca dostępnego na woluminieWłaściwość spaceAvailable obiektu File to ilość miejsca dostępnego do wykorzystania w lokalizacji File, wyrażona w bajtach. Przykład: poniższy kod sprawdza ilość miejsca dostępnego w katalogu zapisu aplikacji: trace(File.applicationStorageDirectory.spaceAvailable); Jeśli obiekt File odwołuje się do katalogu, wówczas właściwość spaceAvailable wskazuje ilość miejsca w katalogu, jaką mogą wykorzystać pliki. Jeśli obiekt File odwołuje się do pliku, wówczas właściwość spaceAvailable wskazuje maksymalną ilość miejsca, jaką może zajmować plik. Jeśli lokalizacja pliku nie istnieje, wówczas właściwość spaceAvailable ma wartość 0. Jeśli obiekt File odwołuje się do dowiązania symbolicznego, wówczas właściwość spaceAvailable jest ustawiona na ilość miejsca dostępnego w lokalizacji, na którą wskazuje dowiązanie symboliczne. Zwykle ilość miejsca dostępnego dla katalogu lub pliku jest taka sama, jak ilość miejsca dostępnego w woluminie zawierającym katalog lub plik. Jednak ilość miejsca dostępnego może uwzględniać przydziały i limity dla poszczególnych katalogów. Dodanie pliku lub katalogu do woluminu zwykle powoduje wykorzystanie większej ilości miejsca niż rzeczywisty rozmiar pliku lub rozmiar zawartości katalogu. Na przykład: system operacyjny może wymagać większej ilości miejsca w celu zapisu danych indeksu. Lub wymagane sektory dysku mogą wykorzystywać dodatkową ilość miejsca. Ponadto dostępna ilość miejsca zmienia się w sposób dynamiczny. Dlatego nie można oczekiwać, że możliwa będzie alokacja całej zgłaszanej ilości miejsca dla zapisu plików. Informacje na temat zapisywania danych w systemie plików zawiera sekcja Odczyt i zapis plików. Metoda StorageVolumeInfo.getStorageVolumes() udostępnia bardziej szczegółowe informacje o podłączonych woluminach pamięci masowej (zobacz Praca z woluminami pamięci masowej). Otwieranie plików za pomocą domyślnej aplikacji systemowejW środowisku AIR 2 istnieje możliwość otwarcia pliku przy użyciu aplikacji zarejestrowanej w systemie operacyjnym jako aplikacja przeznaczona do otwierania plików tego typu. Na przykład aplikacja AIR może otworzyć plik DOC za pomocą aplikacji zarejestrowanej jako przeznaczona do otwierania plików tego typu. W celu otwarcia pliku, należy użyć metody openWithDefaultApplication() obiektu File. Poniższy przykładowy kod otwiera plik o nazwie test.doc na pulpicie użytkownika za pomocą domyślnej aplikacji otwierającej pliki DOC: var file:File = File.deskopDirectory;
file = file.resolvePath("test.doc");
file.openWithDefaultApplication();
Uwaga: W systemie Linux typ MIME pliku, a nie rozszerzenie nazwy pliku określa domyślną aplikację dla pliku.
Poniższy kod umożliwia użytkownikowi przejście do pliku MP3 i otwarcie go w domyślnej aplikacji służącej do odtwarzania plików MP3: var file:File = File.documentsDirectory;
var mp3Filter:FileFilter = new FileFilter("MP3 Files", "*.mp3");
file.browseForOpen("Open", [mp3Filter]);
file.addEventListener(Event.SELECT, fileSelected);
function fileSelected(e:Event):void
{
file.openWithDefaultApplication();
}
Metody openWithDefaultApplication() nie można używać do otwierania plików umieszczonych w katalogu aplikacji. Środowisko AIR uniemożliwia używanie metody openWithDefaultApplication() do otwierania niektórych plików. W systemie Windows środowisko AIR uniemożliwia otwieranie plików należących do niektórych typów, takich jak EXE lub BAT. W systemie Mac OS i Linux środowisko AIR uniemożliwia otwieranie plików, które są uruchamiane w danej aplikacji. (To ograniczenie obejmuje programy Terminal i AppletLauncher w systemie Mac OS oraz csh, bash i ruby w systemie Linux). Próba otwarcia jednego z tych plików przy użyciu metody openWithDefaultApplication() spowoduje wygenerowanie wyjątku. Pełną listę typów plików, których nie można otwierać, zawiera opis metody File.openWithDefaultApplication() w skorowidzu języka. Uwaga: Ograniczenie to nie obowiązuje w aplikacjach AIR zainstalowanych przy użyciu rodzimego programu instalacyjnego (aplikacjach o rozszerzonym profilu lokalnym); patrz Przygotowywanie aplikacji AIR jako pakietu instalatora rodzimego.
|
|