使用目錄

Adobe AIR 1.0 以及更新的版本

執行階段所具備的功能可以讓您使用本機檔案系統中的目錄。

如需有關建立指向目錄之 File 物件的詳細資訊,請參閱將 File 物件指向目錄

建立目錄

File.createDirectory() 方法可以讓您建立目錄。例如,下列程式碼會建立名為 AIR Test 的目錄,做為使用者主目錄的子目錄。

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

如果這個目錄已經存在,則 createDirectory() 方法便不會有任何作用。

此外,在某些模式下,FileStream 物件會在開啟檔案時建立目錄。當您初始化 FileStream 實體並將 FileStream() 建構函式的 fileMode 參數設定為 FileMode.APPENDFileMode.WRITE 時,便會建立遺漏的目錄。如需詳細資訊,請參閱讀取和寫入檔案的工作流程

建立暫存目錄

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

var temp:File = File.createTempDirectory(); 

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

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

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

列舉目錄

您可以使用 File 物件的 getDirectoryListing()getDirectoryListingAsync() 方法,取得指向某個目錄中檔案和子資料夾的 File 物件陣列。

例如,下列程式碼會列出使用者的文件目錄內容 (而不會檢查子目錄):

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

使用這個方法的非同步版本時,directoryListing 事件物件具有 files 屬性,這個屬性是與目錄有關的 File 物件陣列:

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

複製和移動目錄

您可以複製或移動目錄,只要使用與您用來複製或移動檔案的相同方法即可。例如,下列程式碼會以同步方式複製目錄:

var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test"); 
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy"); 
sourceDir.copyTo(resultDir); 

當您將 copyTo() 方法的 overwrite 參數設定為 true 時,現有目標目錄中的所有檔案及資料夾都會遭刪除,並且以來源目錄中的檔案及資料夾取代 (即使來源目錄中沒有目標檔案也一樣)。

您為 copyTo() 方法的 newLocation 參數設定的目錄是指定將產生之目錄的路徑,而「不是」指定會包含將產生之目錄的「上層」目錄。

如需詳細資訊,請參閱複製和移動檔案

刪除目錄內容

File 類別包含 deleteDirectory()deleteDirectoryAsync() 方法。這兩個方法可用來刪除目錄,前者會以同步方式運作,而後者則是以非同步方式運作 (請參閱:AIR 檔的基本概念)。這兩個方法都包含 deleteDirectoryContents 參數 (採用 Boolean 值),設定為 true (預設值為 false) 時,呼叫這個方法會刪除非空白目錄,否則只會刪除空白目錄。

例如,下列程式碼會以同步方式刪除使用者文件目錄的 AIR Test 子目錄:

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.deleteDirectory(true); 

下列程式碼會以非同步方式刪除使用者文件目錄的 AIR Test 子目錄:

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.addEventListener(Event.COMPLETE, completeHandler) 
directory.deleteDirectoryAsync(true); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

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