通过运行时提供的功能,可以使用本地文件系统上的目录。
有关创建指向目录的 File 对象的详细信息,请参阅
将 File 对象指向目录
。
创建目录
使用
File.createDirectory()
方法可以创建目录。例如,以下代码创建名为 AIR Test 的目录以作为用户主目录的子目录:
var dir = air.File.userDirectory.resolvePath("AIR Test");
dir.createDirectory();
如果该目录存在,
createDirectory()
方法不执行任何操作。
另外,在某些模式中,FileStream 对象在打开文件时会创建目录。如果
FileStream()
构造函数的
fileMode
参数设置为
FileMode.APPEND
或
FileMode.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()
方法,您可以使用这些方法将目录移到系统垃圾桶。有关详细信息,请参阅
将文件移到垃圾桶
。
|
|
|