使用目录

Adobe AIR 1.0 和更高版本

通过运行时提供的功能,可以使用本地文件系统上的目录。

有关创建指向目录的 File 对象的详细信息,请参阅将 File 对象指向目录

创建目录

使用 File.createDirectory() 方法可以创建目录。例如,以下代码创建名为 AIR Test 的目录以作为用户主目录的子目录:

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

如果该目录存在,createDirectory() 方法不执行任何操作。

另外,在某些模式中,FileStream 对象在打开文件时会创建目录。如果 FileStream() 构造函数的 fileMode 参数设置为 FileMode.APPENDFileMode.WRITE,则在实例化 FileStream 实例时将创建缺少的目录。有关详细信息,请参阅读取和写入文件的工作流程

创建临时目录

File 类包括一个 createTempDirectory() 方法,该方法可在系统的临时目录文件夹中创建一个目录,如以下示例中所示:

var temp = air.File.createTempDirectory();

createTempDirectory() 方法会自动创建一个唯一的临时目录(您无需确定新的唯一位置)。

您可以使用临时目录暂时存储应用程序会话中使用的临时文件。请注意,有一个 createTempFile() 方法可以在系统临时目录中创建新的、唯一的临时文件。

您可能需要在关闭应用程序前删除临时目录,因为不会 在所有设备上自动删除临时目录。

枚举目录

您可以使用 File 对象的 getDirectoryListing() 方法或 getDirectoryListingAsync() 方法获取指向目录中的文件和子文件夹的 File 对象数组。

例如,以下代码将列出用户的文档目录的内容(无需检查子目录):

var directory = air.File.documentsDirectory; 
var contents = directory.getDirectoryListing();  
for (i = 0; i < contents.length; i++)  
{ 
    alert(contents[i].name, contents[i].size);  
}

当使用该方法的异步版本时,directoryListing 事件对象具有一个 files 属性,该属性是与目录有关的 File 对象数组:

var directory = air.File.documentsDirectory; 
directory.getDirectoryListingAsync(); 
directory.addEventListener(air.FileListEvent.DIRECTORY_LISTING, dirListHandler); 
 
function dirListHandler(event) 
{ 
    var contents = event.files; 
    for (i = 0; i < contents.length; i++)  
    { 
        alert(contents[i].name, contents[i].size);  
    } 
}

复制和移动目录

您可以使用与复制或移动文件相同的方法复制或移动目录。例如,以下代码将以同步方式复制目录:

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

当您将 copyTo() 方法的 overwrite 参数指定为 true 时,现有目标目录中的所有文件和文件夹都将删除,并替换为源目录中的文件和文件夹(即使在源目录中目标文件不存在)。

指定为 copyTo() 方法的 newLocation 参数的目录将指定所生成的目录的路径,它 指定将包含所生成的目录的 目录。

有关详细信息,请参阅复制和移动文件

删除目录内容

File 类包括一个 deleteDirectory() 方法和一个 deleteDirectoryAsync() 方法。这些方法删除目录,第一个方法以同步方式运行,第二个方法以异步方式运行(请参阅 AIR 文件基础知识)。两个方法都包括一个 deleteDirectoryContents 参数(该参数取布尔值);当此参数设置为 true 时(默认值为 false),调用该方法将删除非空目录;否则,只删除空目录。

例如,以下代码以同步方式删除用户的文档目录中的 AIR Test 子目录:

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

以下代码以异步方式删除用户的文档目录中的 AIR Test 子目录:

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

此外,还包括 moveToTrash()moveToTrashAsync() 方法,您可以使用这些方法将目录移到系统垃圾桶。有关详细信息,请参阅将文件移到垃圾桶