執行階段所具備的功能可以讓您使用本機檔案系統中的目錄。
如需有關建立指向目錄之 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()
方法,可以讓您用來將目錄移至系統的垃圾桶。如需詳細資訊,請參閱
將檔案移至垃圾桶
。
|
|
|