2012-08-11 45 views
1

使用AS3 Air for Android,我可以使用哪些代碼來列出本地計算機上所選目錄中的所有文件或計數文件?在這種情況下,我正在使用Air For Android。AS3 AIR - 「list/count」結果內容

然後我想將它們放在一個數組

我願意給50分的這個答案。正如你可以看到我的代表很多,但這個問題對我來說是巨大的。我希望如果可能的話,如果我們不使用類包。

回答

10

以下代碼輸出包含在用戶桌面目錄中的文件和目錄列表。

import flash.filesystem.File; 

var desktop:File = File.applicationDirectory.resolvePath("images"); 
var files:Array = desktop.getDirectoryListing(); 
for (var i:uint = 0; i < files.length; i++) 
{ 
trace(files[i].nativePath); // gets the path of the files 
trace(files[i].name);// gets the name 
/// PUT ARRAY CODE HERE to add each "files[i].name" into an array for later use. 

} 
+0

,但我怎麼能訪問這些文件在不同的文件夾,例如在我的應用程序的紅色的文件夾? – 2012-08-12 22:00:16

+0

我的意思是* root ...不是紅色。 – 2012-08-12 22:32:06

+0

如果平臺未定義桌面,文檔或用戶目錄的標準位置,則File.documentsDirectory,File.desktopDirectory和File.userDirectory可以引用相同的目錄。 你可以試試這個: var prefsFile:File = File.applicationStorageDirectory; 瞭解更多信息http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118666ade46-7fe4.html – 2012-08-13 05:52:51

4

您可以通過檢查目錄列表中的每個文件是否爲目錄來遞歸遍歷目錄。以下函數將遞歸地返回所有文件的計數(不包括目錄)。

function recursiveDirectoryListing(directory:File):int 
{ 
    var count:int = 0; 
    if (directory.isDirectory) 
    { 
     var files:Array = directory.getDirectoryListing(); 
     for (var i:int = 0; i < files.length; i++) 
     { 
      if (files[i].isDirectory) 
      { 
       count += recursiveDirectoryListing(files[i]); 
      } 
      else 
      { 
       trace("file found: " + files[i].nativePath); 
       count += 1; 
      } 
     } 
    } 
    return count; 
} 

然後,你可以調用上的任何位置,你需要列出此功能:

recursiveDirectoryListing(File.applicationStorageDirectory);