在 AIR 中使用 File 物件

Adobe AIR 1.0 以及更新的版本

File 物件是指向檔案系統中檔案或資料夾的指標。

File 類別會擴充 FileReference 類別。FileReference 類別 (在 Adobe® Flash® Player 和 AIR 中都可以使用) 代表檔案的指標,但 File 類別會加入 Flash Player (在瀏覽器中執行的 SWF 檔) 基於安全考量而未公開的屬性和方法。

關於 File 類別

您可以使用 File 類別執行下列工作:

  • 取得特殊目錄 (包括使用者目錄、使用者的文件目錄、應用程式的啟動目錄,以及應用程式目錄) 的路徑

  • 複製檔案及目錄

  • 移動檔案及目錄

  • 刪除檔案及目錄 (或者將它們移至垃圾桶)

  • 列出某個目錄中包含的檔案及目錄

  • 建立暫存檔案及資料夾

一旦 File 物件指向某個檔案路徑,您就可以使用 FileStream 類別,經由這個路徑來讀取和寫入檔案資料。

File 物件可以指向還不存在的檔案或目錄路徑。因此,您可以使用這類 File 物件建立檔案或目錄。

File 物件的路徑

每一個 File 物件都有兩個屬性,每一個屬性都會定義自己的路徑:

屬性

說明

nativePath

指定檔案的平台專屬路徑。例如,在 Windows 中的路徑會是「c:\Sample directory\test.txt」;而在 Mac OS 中則是「/Sample directory/test.txt」。在 Windows 中,nativePath 屬性會使用反斜線 (\) 字元做為目錄分隔符號字元;而在 Mac OS 和 Linux 中,則是使用正斜線 (/) 字元。

url

這個屬性會使用 file URL 配置來指向檔案。例如,在 Windows 中的路徑會是「file:///c:/Sample%20directory/test.txt」;而在 Mac OS 中則是「file:///Sample%20directory/test.txt」。除了 file 以外,執行階段還包括其它特殊的 URL 配置。如需詳細資訊,請參閱支援的 AIR URL 配置

File 類別包含可在 Mac OS、Windows 和 Linux 中指向標準目錄的靜態屬性。這些屬性包括:

  • File.applicationStorageDirectory — 每個已安裝 AIR 應用程式唯一的儲存目錄。此目錄是儲存動態應用程式資源和使用者偏好設定的適當位置。請考慮在其他位置儲存大量的資料。

    在 Android 上,當應用程式解除安裝或是使用者選擇清除應用程式資料時,會移除應用程式儲存目錄,但是在其他平台上則不是這樣。

  • File.applicationDirectory—安裝應用程式 (與任何其他已安裝的資產) 的目錄在某些作業系統上,會將應用程式儲存在單一套件檔案中,而不是實體目錄中。在此情況下,可能無法使用原生路徑來存取內容。應用程式目錄是唯讀。

  • File.desktopDirectory — 使用者桌面目錄。如果平台未定義桌面目錄,則會使用檔案系統上的其他位置。

  • File.documentsDirectory — 使用者文件目錄。如果平台未定義文件目錄,則會使用檔案系統上的其他位置。

  • File.userDirectory — 使用者目錄。如果平台未定義使用者目錄,則會使用檔案系統上的其他位置。

備註: 當平台沒有為桌面、文件或使用者目錄定義標準位置時,File.documentsDirectoryFile.desktopDirectoryFile.userDirectory 可以參照相同的目錄。

這些屬性在不同作業系統上各有不同的值。例如,Mac 和 Windows 對於使用者的桌面目錄各有不同的原生路徑。不過,File.desktopDirectory 屬性會指向每個平台上適當的目錄路徑。若要撰寫可跨平台使用的應用程式,請使用此屬性做為基礎,讓應用程式參照到所用的其他目錄和檔案。然後使用 resolvePath() 方法來修改路徑。例如,此程式碼會指向應用程式儲存目錄中的 preferences.xml 檔案:

var prefsFile:File = File.applicationStorageDirectory; 
prefsFile = prefsFile.resolvePath("preferences.xml");

雖然 File 類別可讓您指向特定檔案路徑,但這麼做會讓應用程式無法跨平台使用。例如,C:\Documents and Settings\joe\ 這個路徑僅適用於 Windows。因此,最好使用 File 類別的靜態屬性,如 File.documentsDirectory

一般目錄位置

平台

目錄類型

一般檔案系統位置

Android

應用程式

/data/data/

應用程式儲存區

/data/data/air.applicationID/filename/Local Store

桌上型

/mnt/sdcard

文件

/mnt/sdcard

暫存

/data/data/applicationID/cache/FlashTmp.randomString

使用者

/mnt/sdcard

Linux

應用程式

/opt/filename/share

應用程式儲存區

/home/userName/.appdata/applicationID/Local Store

桌上型

/home/userName/Desktop

文件

/home/userName/Documents

暫存

/tmp/FlashTmp.randomString

使用者

/home/userName

Mac

應用程式

/Applications/filename.app/Contents/Resources

應用程式儲存區

/Users/userName/Library/Preferences/applicationID/Local Store

桌上型

/Users/userName/Desktop

文件

/Users/userName/Documents

暫存

/private/var/folders/JY/randomString/TemporaryItems/FlashTmp

使用者

/Users/userName

Windows

應用程式

C:\Program Files\filename

應用程式儲存區

C:\Documents and settings\userName\ApplicationData\applicationID\Local Store

桌上型

C:\Documents and settings\userName\Desktop

文件

C:\Documents and settings\userName\My Documents

暫存

C:\Documents and settings\userName\Local Settings\Temp\randomString.tmp

使用者

C:\Documents and settings\userName

這些目錄的實際原生路徑將隨作業系統與電腦組態而異。在這個表格顯示的路徑為一般範例。您應該總是使用適當的靜態 File 類別屬性以參照這些目錄,這樣您的應用程式即可在任何平台上正常運作。在實際的 AIR 應用程式中,會從應用程式描述器取得表格中顯示的 applicationIDfilename 值。如果您在應用程式描述器中指定發行者 ID,那麼發行者 ID 會附加至這些路徑中的應用程式 ID。userName 的值是安裝使用者的帳戶名稱。

電視版 AIR 應用程式的目錄檢視

若要為電視版 AIR 裝置的系統檔案提供安全性,AIR 應用程式只能存取一組受限的目錄。電視版 AIR 會禁止應用程式存取任何其他目錄。此外,電視版 AIR 會為每個 AIR 應用程式隔離每個使用者的使用者特定資料。

AIR 應用程式會使用僅適用於 ActionScript 3.0 的目錄名稱。這些名稱並不代表裝置上的實際目錄。電視版 AIR 會將這些 ActionScript 3.0 目錄名稱對應至實際的裝置目錄。這些對應會保護電視版 AIR 應用程式,使其避免在惡意或意外的情況下存取不屬於它們的本機檔案。

ActionScript 3.0 目錄名稱如下:

/app/
執行 AIR 應用程式的唯讀應用程式目錄。

/app-storage/
執行 AIR 應用程式的讀寫應用程式儲存目錄。

/home/
讀寫使用者目錄。

/tmp/
執行 AIR 應用程式的讀寫暫存目錄。

/volumes/
唯讀目錄包含代表掛接磁碟的零個或更多讀寫子目錄。

如果應用程式嘗試存取禁止的目錄,執行階段會擲出 ActionScript 程式碼可以捕捉的例外。

下表顯示各種 File 屬性與方法的 File.nativePath 值。這些值會反映裝置檔案系統的應用程式受限檢視。

File 屬性或方法

File.nativePath

對應資訊

applicationDirectory

/app/

應用程式特定目錄的對應。

applicationStorageDirectory

/app-storage/

在使用者特定目錄中應用程式特定目錄的對應。

desktopDirectory

/home/

在使用者特定目錄中應用程式特定目錄的對應。與 userDirectorydocumentsDirectory 相同的目錄。

userDirectory

/home/

在使用者特定目錄中應用程式特定目錄的對應。與 desktopDirectorydocumentsDirectory 相同的目錄。

documentsDirectory

/home/

在使用者特定目錄中應用程式特定目錄的對應。與 userDirectorydesktopDirectory 相同的目錄。

createTempDirectory()

/tmp/

暫存目錄的對應。當 AIR 應用程式存在時,電視版 AIR 會刪除此目錄及其內容。

另外請考慮下列方法在電視版 AIR 裝置的行為:

  • File.createTempFile() 會在 /tmp/ 目錄中建立檔案。

  • File.getRootDirectories() 會傳回具有一個 File 物件的陣列。File 物件的 nativePath 屬性具有 / 這個值。根目錄包含 appapp-storagehometmp 目錄。

  • StorageVolumeInfo.storageVolumeInfo.getStorageVolumes() 方法會傳回 StorageVolume 物件的 Vector。每個 StorageVolume 物件的 rootDirectory 屬性都是一個 File 物件。File 物件的 nativePath 值是以 /volumes/ 開始。所有的應用程式與使用者都可以存取 /volumes/ 目錄。

將 File 物件指向目錄

有多種方式可以將 File 物件設定為指向某個目錄。

指向使用者的主目錄

您可以將 File 物件指向使用者的主目錄。下列程式碼會將 File 物件設定為指向主目錄的 AIR Test 子目錄:

var file:File = File.userDirectory.resolvePath("AIR Test"); 

指向使用者的文件目錄

您可以將 File 物件指向使用者的文件目錄。下列程式碼會將 File 物件設定為指向文件目錄的 AIR Test 子目錄:

var file:File = File.documentsDirectory.resolvePath("AIR Test");

指向桌面目錄

您可以將 File 物件指向桌面。下列程式碼會將 File 物件設定為指向桌面的 AIR Test 子目錄:

var file:File = File.desktopDirectory.resolvePath("AIR Test");

指向應用程式儲存目錄

您可以將 File 物件指向應用程式儲存目錄。對於每一個 AIR 應用程式而言,都有一個可定義應用程式儲存目錄的唯一相關聯路徑。這個目錄對於每一個應用程式與使用者而言都具有唯一性。您可以使用這個目錄,儲存使用者和應用程式的專屬資料 (例如使用者資料或偏好設定檔案)。例如,下列程式碼會將 File 物件指向 prefs.xml 這個偏好設定檔案,這個檔案位於應用程式儲存目錄中:

var file:File = File.applicationStorageDirectory; 
file = file.resolvePath("prefs.xml");

這個應用程式儲存目錄的位置通常是根據使用者名稱和應用程式 ID 而定。此處所提供的下列檔案系統位置是用以協助您進行應用程式除錯。您永遠都應該使用 File.applicationStorage 屬性或 app-storage: URI 配置,來解析此目錄中的檔案:

  • 在 Mac OS 中,位置為:

    /Users/使用者名稱/Library/Preferences/applicationID/Local Store/

    例如:

    /Users/babbage/Library/Preferences/com.example.TestApp/Local Store
  • 在 Windows 中,則是位於 Documents and Settings 目錄內,位置為:

    C:\Documents and Settings\user name\Application Data\applicationID\Local Store\

    例如:

    C:\Documents and Settings\babbage\Application Data\com.example.TestApp\Local Store
  • Linux—位於:

    /home/使用者名稱/.appdata/applicationID/Local Store/

    例如:

    /home/babbage/.appdata/com.example.TestApp/Local Store
  • Android—位於:

    /data/data/androidPackageID/applicationID/Local Store

    例如:

    /data/data/air.com.example.TestApp/com.example.TestApp/Local Store
  • 在電視版 AIR 裝置上,可於 電視版 AIR 應用程式的目錄檢視中找到此位置的說明。

備註: 如果應用程式具有發行者 ID,則發行者 ID 也會做為應用程式儲存目錄路徑的一部分。

使用 File.applicationStorageDirectory 建立之 File 物件的 URL (以及 url 屬性) 會使用 app-storage URL 配置 (請參閱支援的 AIR URL 配置),如下所示:

var dir:File = File.applicationStorageDirectory; 
dir = dir.resolvePath("preferences"); 
trace(dir.url); // app-storage:/preferences

指向應用程式目錄

您可以將 File 物件指向應用程式的安裝目錄 (也就是應用程式目錄)。您可以使用 File.applicationDirectory 屬性參考這個目錄。您可以使用這個目錄,檢查與應用程式一併安裝的應用程式描述器檔案或其它資源。例如,下列程式碼會將 File 物件指向應用程式目錄中名為 images 的目錄:

var dir:File = File.applicationDirectory; 
dir = dir.resolvePath("images"); 

使用 File.applicationDirectory 建立之 File 物件的 URL (以及 url 屬性) 會使用 app URL 配置 (請參閱支援的 AIR URL 配置),如下所示:

var dir:File = File.applicationDirectory; 
dir = dir.resolvePath("images"); 
trace(dir.url); // app:/images
備註: 在 Android 上,應用程式套件中的檔案無法透過 nativePath 來存取。nativePath 屬性是空的字串。永遠使用 URL 存取應用程式目錄中的檔案,而非使用原生路徑。

指向檔案系統根目錄

File.getRootDirectories() 方法會列出 Windows 電腦中的所有根磁碟,例如 C: 和掛接式磁碟。在 Mac OS 和 Linux 中,這個方法一定會傳回電腦的唯一根目錄 (即「/」目錄)。StorageVolumeInfo.getStorageVolumes() 方法提供掛接式儲存體磁碟區的詳細資訊 (請參閱使用儲存空間)。

備註: 在 Android 上無法讀取檔案系統的根目錄。會傳回參照具有原生路徑「/」之目錄的 File 物件,但是該物件的屬性沒有精確的值。例如,spaceAvailable 永遠是 0。

指向明確的目錄

您可以設定 File 物件的 nativePath 屬性,將 File 物件指向明確的目錄,如下列範例所示 (適用於 Windows):

var file:File = new File(); 
file.nativePath = "C:\\AIR Test";

重要事項:以這種方式指向明確路徑,將使程式碼無法跨平台使用。例如,上一個範例只能在 Windows 上運作。您可使用 File 物件的靜態屬性,如File.applicationStorageDirectory,以找出可跨平台運作的目錄。 再使用 resolvePath() 方法 (請參閱下一節) 瀏覽至相對路徑。

瀏覽至相對路徑

您可以使用 resolvePath() 方法,取得相對於其它指定之路徑的路徑。例如,下列程式碼會將 File 物件設定為指向使用者之主目錄的「AIR Test」子目錄:

var file:File = File.userDirectory; 
file = file.resolvePath("AIR Test");

您也可以使用 File 物件的 url 屬性,將物件指向 URL 字串架構的目錄,如下所示:

var urlStr:String = "file:///C:/AIR Test/"; 
var file:File = new File() 
file.url = urlStr; 

如需詳細資訊,請參閱修改 File 的路徑

讓使用者瀏覽以選取目錄

File 包含 browseForDirectory() 方法,這個方法可以產生系統對話方塊,讓使用者在其中選取目錄指定給該物件。browseForDirectory() 是非同步方法。如果使用者選取目錄並按一下「開啟」按鈕,這個方法便會傳送 select 事件;而如果使用者按一下「取消」按鈕,則會傳送 cancel 事件。

例如,下列程式碼會讓使用者選取某個目錄,並且在選取之後立即輸出該目錄的路徑:

var file:File = new File(); 
file.addEventListener(Event.SELECT, dirSelected); 
file.browseForDirectory("Select a directory"); 
function dirSelected(e:Event):void { 
    trace(file.nativePath); 
}
備註: 在 Android 上,不支援 browseForDirectory() 方法。呼叫此方法不會發生作用;會立即傳送取消事件。若要讓使用者選取目錄,您必須改用自訂且應用程式定義的對話方塊。

指向應用程式的叫用目錄

您可以檢查在叫用應用程式時傳送之 InvokeEvent 物件的 currentDirectory 屬性,取得應用程式的叫用目錄位置。如需詳細資訊,請參閱擷取命令列引數

將 File 物件指向檔案

有多種方式可以設定 File 物件指向的目標檔案。

指向明確檔案路徑

重要事項:指向明確路徑,將使程式碼無法跨平台使用。例如,C:/foo.txt 這個路徑僅適用於 Windows。您可使用 File 物件的靜態屬性,如File.applicationStorageDirectory,以找出可跨平台運作的目錄。 再使用 resolvePath() 方法 (請參閱修改 File 的路徑) 瀏覽至相對路徑。

您可以使用 File 物件的 url 屬性,將物件指向 URL 字串架構的目錄或檔案,如下所示:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 
var file:File = new File() 
file.url = urlStr; 

您也可以將 URL 傳遞給 File() 建構函數,如下所示:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 
var file:File = new File(urlStr); 

url 屬性一定會傳回經過 URI 編碼的 URL (例如,以 "%20 取代空格):

file.url = "file:///c:/AIR Test"; 
trace(file.url); // file:///c:/AIR%20Test 

您也可以使用 File 物件的 nativePath 屬性來設定明確的路徑。例如,下列程式碼在 Windows 電腦中執行時,會將 File 物件設定為指向 C: 磁碟之 AIR Test 子目錄中的 test.txt 檔案:

var file:File = new File(); 
file.nativePath = "C:/AIR Test/test.txt"; 

您也可以將這個路徑傳遞給 File() 建構函數,如下所示:

var file:File = new File("C:/AIR Test/test.txt"); 

使用正斜線 (/) 字元做為 nativePath 屬性的路徑分隔符號。在 Windows 上,您亦可使用反斜線 (\) 字元,但這樣會導致應用程式無法跨平台使用。

如需詳細資訊,請參閱修改 File 的路徑

列舉目錄中的檔案

您可以使用 File 物件的 getDirectoryListing() 方法,取得指向根層級目錄中檔案和子目錄的 File 物件陣列。如需詳細資訊,請參閱列舉目錄

讓使用者瀏覽以選取檔案

File 類別包含下列方法,這些方法可以產生系統對話方塊,讓使用者在其中選取檔案指定給該物件:

  • browseForOpen()

  • browseForSave()

  • browseForOpenMultiple()

這些方法都是非同步方法。當使用者選取檔案 (對於 browseForSave(),則是目標路徑) 時,browseForOpen()browseForSave() 方法便會傳送 select 事件。使用 browseForOpen()browseForSave() 方法時,一旦選取項目之後,目標 File 物件就會立即指向選取的檔案。當使用者選取多個檔案時,browseForOpenMultiple() 方法便會傳送 selectMultiple 事件。selectMultiple 事件的類型為 FileListEvent,這個事件具有 files 屬性,該屬性是 File 物件陣列 (指向選取的檔案)。

例如,下列程式碼會將「開啟」對話方塊呈現在使用者面前,讓使用者可以在其中選取檔案:

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); 
} 

當您呼叫瀏覽方法時,如果應用程式已經開啟其它瀏覽器對話方塊,執行階段就會擲回 Error 例外。

修改 File 的路徑

您也可以呼叫 resolvePath() 方法,或者修改現有 File 物件的 nativePathurl 屬性,修改 File 物件的路徑,如下列範例所示 (適用於 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 

使用 nativePath 屬性時,請使用正斜線 (/) 字元,做為路徑分隔字元。在 Windows 上,您亦可使用反斜線 (\) 字元,但不建議這麼做,因為這樣會導致程式碼無法跨平台運作。

支援的 AIR URL 配置

在 AIR 中定義 File 物件的 url 屬性時,您可以使用下列任何 URL 配置:

URL 配置

說明

file

用於指定相對於檔案系統根項目的路徑。例如:

file:///c:/AIR Test/test.txt

URL 標準會指定 file URL 必須採用 file://<host>/<path> 的形式。在特殊情況下,<host> 可以是空字串,這時就表示「正在解譯其 URL 的電腦」。因此,file URL 通常都有三條斜線 (///)。

app

用於指定相對於應用程式之安裝根目錄 (包含所安裝應用程式之 application.xml 檔案的目錄) 的路徑。例如,下列路徑會指向應用程式安裝目錄的 images 子目錄:

app:/images

app-storage

用於指定相對於應用程式儲存目錄的路徑。針對每一個安裝的應用程式,AIR 都會定義唯一的應用程式儲存目錄,可以用來儲存某個應用程式專屬的資料。例如,下列路徑會指向應用程式儲存目錄之 settings 子目錄中的 prefs.xml 檔案:

app-storage:/settings/prefs.xml

尋找兩個檔案之間的相對路徑

您可以使用 getRelativePath() 方法,尋找兩個檔案之間的相對路徑:

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 

getRelativePath() 方法的第二個參數 useDotDot 允許在結果中傳回 .. 語法,以指出上層目錄:

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 

取得檔名的標準化版本

檔案和路徑名稱在 Windows 和 Mac OS 中不會區分大小寫。在下列範例中,兩個 File 物件會指向相同的檔案:

File.documentsDirectory.resolvePath("test.txt"); 
File.documentsDirectory.resolvePath("TeSt.TxT");

不過,文件和目錄名稱則包含大小寫。例如,下列範例會假設在 documents 目錄中有名為 AIR Test 的資料夾:

var file:File = File.documentsDirectory.resolvePath("AIR test"); 
trace(file.nativePath); // ... AIR test 
file.canonicalize(); 
trace(file.nativePath); // ... AIR Test 

canonicalize() 方法會轉換 nativePath 物件,為檔案或目錄名稱使用正確的大小寫。在區分大小寫的檔案系統上 (例如 Linux),當同時存在多個僅名稱大小寫不同的檔案時,canonicalize() 方法就會調整路徑來對應所找到的第一個檔案 (尋找的順序由檔案系統決定)。

您也可以使用 canonicalize() 方法,將短檔名 (「8.3」名稱) 轉換為長檔名 (適用於 Windows),如下列範例所示:

var path:File = new File(); 
path.nativePath = "C:\\AIR~1"; 
path.canonicalize(); 
trace(path.nativePath); // C:\AIR Test

使用套件和符號連結

各種作業系統都支援套件檔案和符號連結檔案:

套件—在 Mac OS 中,目錄可以指定為套件,並在 Mac OS Finder 中顯示為單一檔案,而非顯示為目錄。

符號連結—Mac OS、Linux 和 Windows Vista 皆支援符號連結。符號連結可讓檔案指向磁碟上的另一個檔案或目錄。符號連結與別名相似,但卻不同。別名一定會回報為檔案 (而非目錄),而且讀取或寫入別名或捷徑絕不會影響它所指向的原始檔案或目錄。另一方面,符號連結的行為和它所指向的符號或目錄完全相同。它可以回報為檔案或目錄,而且讀取或寫入符號連結會影響它所指向的原始檔案或目錄,而非符號連結本身。此外,在 Windows 中,對於參考連接點 (在 NTFS 檔案系統中使用) 的 File 物件,isSymbolicLink 屬性是設定為 true

File 類別包含 isPackageisSymbolicLink 屬性,可用於檢查 File 物件參考的是套件還是符號連結。

下列程式碼會重複執行使用者的桌面目錄,並列出「不是」套件的子目錄:

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); 
    } 
} 

下列程式碼會重複執行使用者的桌面目錄,並列出「不是」符號連結的檔案和目錄:

var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); 
for (var i:uint = 0; i < desktopNodes.length; i++)  
{ 
    if (!desktopNodes[i].isSymbolicLink) 
    { 
        trace(desktopNodes[i].name); 
    } 
} 

canonicalize() 方法會變更符號連結的路徑,使其指向該連結所參考的檔案或目錄。下列程式碼會重複執行使用者的桌面目錄,並回報本身為符號連結之檔案所參考的路徑:

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); 
    } 
} 

判斷磁碟的可用空間

File 物件的 spaceAvailable 屬性表示在 File 位置的可用空間 (以位元組為單位)。例如,下列程式碼會檢查應用程式儲存目錄中的可用空間:

trace(File.applicationStorageDirectory.spaceAvailable); 

如果 File 物件參考目錄,則 spaceAvailable 屬性會指出目錄中檔案可使用的空間。如果 File 物件參考檔案,則 spaceAvailable 屬性會指出檔案可成長的空間。如果檔案位置不存在,spaceAvailable 屬性會設定為 0。如果 File 物件參考符號連結,則 spaceAvailable 屬性會設定為符號連結所指向位置的可用空間。

目錄或檔案的可用空間通常與包含目錄或檔案之磁碟中的可用空間相同。不過,可用空間可能會將帳戶配額和每個目錄限制納入考量。

將檔案或目錄加入至磁碟,通常需要比檔案實際大小或目錄內容大小更大的空間。例如,作業系統可能需要更多空間來儲存索引資訊。必要的磁區也可能會使用額外的空間。此外,可用空間會動態變更。因此,您無法預期為檔案儲存區配置「所有」空間。如需有關在檔案系統中寫入資料的詳細資訊,請參閱讀取和寫入檔案

StorageVolumeInfo.getStorageVolumes() 方法提供掛接式儲存體磁碟區的詳細資訊 (請參閱使用儲存空間)。

使用預設系統應用程式開啟檔案

在 AIR 2 中,您可以使用作業系統註冊的應用程式來開啟檔案。例如,AIR 應用程式可以使用註冊的應用程式來開啟 DOC 檔案。使用 File 物件的 openWithDefaultApplication() 方法開啟檔案。例如,以下程式碼使用 DOC 檔案的預設應用程式來開啟使用者桌面上名稱為 test.doc 檔案:

var file:File = File.deskopDirectory; 
file = file.resolvePath("test.doc"); 
file.openWithDefaultApplication();
備註: 在 Linux 上,檔案的 MIME 類型 (非副檔名) 會決定檔案的預設應用程式。

以下程式碼可以讓使用者瀏覽 mp3 檔案,然後使用 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(); 
}

您不可以將 openWithDefaultApplication() 方法用於應用程式目錄中的檔案。

AIR 會禁止您使用 openWithDefaultApplication() 方法開啟特定的檔案。在 Windows 上,AIR 會禁止開啟特定檔案類型的檔案,例如 EXE 或 BAT。在 Mac OS 和 Linux 上,AIR 會讓您無法開啟以特定應用程式啟動的檔案 (這些包括 Mac OS 上的 Terminal 和 AppletLauncher,以及 Linux 上的 csh、bash 或 ruby)。嘗試使用 openWithDefaultApplication() 方法開啟這些檔案會產生例外。如需禁止的檔案類型詳細清單,請參閱 File.openWithDefaultApplication() 方法的語言參考項目。

備註: 使用原生安裝程式 (擴充桌面應用程式) 安裝的 AIR 應用程式沒有這項限制;請參閱將 AIR 應用程式封裝為原生安裝程式