處理檔案

Adobe AIR 1.0 以及更新的版本

您可以利用 AIR 檔案 API,在應用程式中加入基本的檔案互動功能。例如,您可以讀取和寫入檔案、複製和刪除檔案等等。由於應用程式會存取本機檔案系統,因此請先參閱:AIR 安全性

備註: 您可以將某個檔案類型與 AIR 應用程式產生關聯 (如此只要按兩下該檔案,即可開啟 AIR 應用程式)。如需詳細資訊,請參閱管理檔案關聯

取得檔案資訊

File 類別包含下列屬性,這些屬性可提供 File 物件所指向檔案或目錄的相關資訊:

File 屬性

說明

creationDate

本機磁碟中檔案的建立日期。

creator

已過時。請使用 extension 屬性 (這個屬性會回報檔案的 Macintosh 建立者類型,只能在 Mac OS X 之前的 Mac OS 版本中使用)。

下載

(AIR 2 以及更新的版本) 指出是否已下載參考的檔案或目錄 (從網際網路)。只有在可以將檔案標記為已下載的作業系統上,本屬性才有意義,如下:

  • Windows XP Service Pack 2 和更新版本,以及在 Windows Vista 上

  • Mac OS 10.5 與更新的版本

exists

參考的檔案或目錄是否存在。

extension

副檔名,也就是最後一個點 (".") 字元後面 (不含 "." 本身) 的名稱部分。如果檔案名稱中沒有點字元,則副檔名為 null

icon

包含為檔案所定義之圖示的 Icon 物件。

isDirectory

File 物件是否參考某個目錄。

modificationDate

本機磁碟中最後修改之檔案或目錄的日期。

name

本機磁碟中檔案或目錄的名稱 (如果有副檔名,則包含該副檔名)。

nativePath

以主機作業系統形式表示的完整路徑。請參閱:File 物件的路徑

parent

包含由 File 物件所表示之資料夾或檔案的資料夾。如果 File 物件參考檔案系統根目錄中的檔案或目錄,這個屬性便為 null

size

本機磁碟中的檔案大小,以位元組為單位。

type

已過時。請使用 extension 屬性 (在 Macintosh 中,這個屬性是四個字元的檔案類型,只能在 Mac OS X 之前的 Mac OS 版本中使用)。

url

檔案或目錄的 URL。請參閱:File 物件的路徑

如需這些屬性的詳細資訊,請參閱適用於 Adobe Flash Platform 的 ActionScript 3.0 參考中的 File 類別項目。

複製和移動檔案

File 類別包含兩個用於複製檔案或目錄的方法:copyTo()copyToAsync()。File 類別包含兩個用於移動檔案或目錄的方法:moveTo()moveToAsync()copyTo()moveTo() 方法是以同步方式運作,而 copyToAsync()moveToAsync() 方法則是以非同步方式運作 (請參閱:AIR 檔的基本概念)。

若要複製或移動檔案,請設定兩個 File 物件。其中一個物件指向要複製或移動的檔案,而且它是呼叫複製或移動方法的物件;而另一個物件則指向目的地 (結果) 路徑。

下列程式碼會在使用者文件目錄的 AIR Test 子目錄中,將 test.txt 檔案複製成為相同目錄中名為的 copy.txt 檔案:

var original:File = File.documentsDirectory.resolvePath("AIR Test/test.txt"); 
var newFile:File = File.resolvePath("AIR Test/copy.txt"); 
original.copyTo(newFile, true); 

在上述範例中,copyTo() 方法的 overwrite 參數 (第二個參數) 設定為 true。將 overwrite 設定為 true 時,現有的目標檔案便會遭覆寫。這個參數是選擇性參數。如果您將這個參數設定為 false (預設值),則當目標檔案存在時,作業會傳送 IOErrorEvent 事件 (並且不會複製檔案)。

「非同步」版本的複製和移動方法都是以非同步方式運作。您可以使用 addEventListener() 方法監視工作順利完成或發生的錯誤狀況,如下列程式碼所示:

var original = File.documentsDirectory; 
original = original.resolvePath("AIR Test/test.txt"); 
 
var destination:File = File.documentsDirectory; 
destination =  destination.resolvePath("AIR Test 2/copy.txt"); 
 
original.addEventListener(Event.COMPLETE, fileMoveCompleteHandler); 
original.addEventListener(IOErrorEvent.IO_ERROR, fileMoveIOErrorEventHandler); 
original.moveToAsync(destination); 
 
function fileMoveCompleteHandler(event:Event):void { 
    trace(event.target); // [object File] 
} 
function fileMoveIOErrorEventHandler(event:IOErrorEvent):void { 
    trace("I/O Error.");  
} 

File 類別也包含 File.moveToTrash()File.moveToTrashAsync() 方法,可以將檔案或目錄移至系統的垃圾桶。

刪除檔案

File 類別包含 deleteFile()deleteFileAsync() 方法。這兩個方法可用來刪除檔案:前者會以同步方式運作,而後者則是以非同步方式運作 (請參閱:AIR 檔的基本概念)。

例如,下列程式碼會以同步方式刪除使用者文件目錄中的 test.txt 檔案:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.deleteFile(); 

下列程式碼會以非同步方式刪除使用者文件目錄中的 test.txt 檔案:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.addEventListener(Event.COMPLETE, completeHandler) 
file.deleteFileAsync(); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

File 類別還包含 moveToTrash()moveToTrashAsync() 方法,可以讓您用來將檔案或目錄移至「系統」的垃圾桶。如需詳細資訊,請參閱將檔案移至垃圾桶

將檔案移至垃圾桶

File 類別包含 moveToTrash()moveToTrashAsync() 方法。這兩個方法可用來將檔案或目錄傳送至「系統」的垃圾桶:前者會以同步方式運作,而後者則是以非同步方式運作 (請參閱:AIR 檔的基本概念)。

例如,下列程式碼會以同步方式,將使用者文件目錄中的 test.txt 檔案移至「系統」的垃圾桶:

var file:File = File.documentsDirectory.resolvePath("test.txt"); 
file.moveToTrash(); 
備註: 在不具有可復原資源回收筒功能的作業系統上,將會立即移除檔案。

建立暫存檔案

File 類別包含 createTempFile() 方法,可以用來在「系統」的暫存目錄資料夾中建立新檔案,如下列範例所示:

var temp:File = File.createTempFile(); 

createTempFile() 會自動建立唯一的暫存檔案 (可以節省您為了尋找新的唯一位置而要花費的功夫)。

您可以使用暫存檔案,暫時儲存在應用程式某個工作階段使用的資訊。請注意,您也可以使用 createTempDirectory() 方法,在「系統」的暫存目錄中建立新的唯一暫存目錄。

在關閉應用程式之前,您可能會想要刪除這個暫存檔案,因為系統「不會」自動刪除所有裝置上的該檔案。