2012-08-11 62 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);