使用目錄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.APPEND 或 FileMode.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() 方法,可以讓您用來將目錄移至系統的垃圾桶。如需詳細資訊,請參閱將檔案移至垃圾桶。 |
|