使用文件

Adobe AIR 1.0 和更高版本

使用 AIR 文件 API,您可以向应用程序中添加基本的文件交互功能。例如,您可以读取和写入文件、复制和删除文件等。由于您的应用程序可以访问本地文件系统,因此请参阅 AIR 安全性 (如果您还没有阅读该章节)。

注: 您可以将文件类型与 AIR 应用程序相关联(以便双击时可以打开应用程序)。有关详细信息,请参阅 管理文件关联 。

获取文件信息

File 类包括以下属性,这些属性提供有关 File 对象指向的文件或目录的信息:

File 属性

说明

creationDate

本地磁盘上文件的创建日期。

creator

已废弃。请使用 extension 属性。(此属性报告文件的 Macintosh 创建者类型,此属性仅用于 Mac OS X 之前的 Mac OS 版本中。)

downloaded

(AIR 2 和更高版本)指示是否已(从 Internet)下载引用的文件或目录。属性仅在文件可以标记为已下载的操作系统上有意义:

  • Windows XP Service Pack 2 和更高版本,在 Windows Vista 上

  • Mac OS 10.5 和更高版本

exists

引用的文件或目录是否存在。

extension

文件扩展名,它是最后一个句点(“.”)后面的名称部分(不包括句点)。如果文件名中没有句点,则 extension 为 null 。

icon

包含为文件定义的图标的 Icon 对象。

isDirectory

File 对象引用是否为对目录的引用。

modificationDate

本地磁盘上文件或目录的上一次修改日期。

name

本地磁盘上文件或目录的名称(如果存在文件扩展名,则包括文件扩展名)。

nativePath

采用主机操作系统表示形式的完整路径。请参阅 File 对象的路径 。

parent

包含由 File 对象表示的文件夹或文件的文件夹。如果 File 对象引用的是文件系统根目录中的文件或目录,此属性为 null 。

size

本地磁盘上文件的大小(以字节为单位)。

type

已废弃。请使用 extension 属性。(在 Macintosh 中,此属性是四个字符的文件类型,它仅用于 Mac OS X 之前的 Mac OS 版本中。)

url

文件或目录的 URL。请参阅 File 对象的路径 。

有关这些属性的详细信息,请参阅 针对 HTML 开发人员的 Adobe AIR API 参考 中的 File 类条目。

复制和移动文件

File 类包括两个用于复制文件或目录的方法: copyTo() 和 copyToAsync() 。File 类包括两个用于移动文件或目录的方法: moveTo() 和 moveToAsync() 。 copyTo() 和 moveTo() 方法以同步方式运行, copyToAsync() 和 moveToAsync() 方法以异步方式运行(请参阅 AIR 文件基础知识 )。

若要复制或移动文件,请设置两个 File 对象。一个对象指向要复制或移动的文件,它是调用复制或移动方法的对象;另一个对象指向目标(结果)路径。

以下代码将 test.txt 文件从用户的文档目录的 AIR Test 子目录复制到同一目录中名为 copy.txt 的文件:

var original = air.File.documentsDirectory.resolvePath("AIR Test/test.txt"); 
var newFile = air.File.documentsDirectory.resolvePath("AIR Test/copy.txt"); 
original.copyTo(newFile, true);

在此例中, copyTo() 方法的 overwrite 参数(第二个参数)的值设置为 true 。通过将 overwrite 设置为 true ,可以覆盖现有目标文件。此参数是可选的。如果您将它设置为 false (默认值),则当目标文件存在时该操作调度一个 IOErrorEvent 事件(文件没有复制)。

复制和移动方法的“异步”版本以异步方式运行。使用 addEventListener() 方法可以监视任务是否完成或错误条件,如以下代码中所示:

var original = air.File.documentsDirectory; 
original = original.resolvePath("AIR Test/test.txt"); 
 
var destination = air.File.documentsDirectory; 
destination =  destination.resolvePath("AIR Test 2/copy.txt"); 
 
original.addEventListener(air.Event.COMPLETE, fileMoveCompleteHandler); 
original.addEventListener(air.IOErrorEvent.IO_ERROR, fileMoveIOErrorEventHandler); 
original.moveToAsync(destination); 
 
function fileMoveCompleteHandler(event){ 
    alert(event.target); // [object File] 
} 
function fileMoveIOErrorEventHandler(event) { 
    alert("I/O Error.");  
}

File 类还包括 File.moveToTrash() 和 File.moveToTrashAsync() 方法,它们将文件或目录移到系统垃圾桶。

删除文件

File 类包括一个 deleteFile() 方法和一个 deleteFileAsync() 方法。这些方法删除文件,第一个方法以同步方式运行,第二个方法以异步方式运行(请参阅 AIR 文件基础知识 )。

例如,以下代码以同步方式删除用户的文档目录中的 test.txt 文件:

var file = air.File.documentsDirectory.resolvePath("test.txt"); 
file.deleteFile();

以下代码以异步方式删除用户的文档目录中的 test.txt 文件:

var file = air.File.documentsDirectory.resolvePath("test.txt"); 
file.addEventListener(air.Event.COMPLETE, completeHandler) 
file.deleteFileAsync(); 
 
function completeHandler(event) { 
    alert("Deleted.") 
}

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

将文件移到垃圾桶

File 类包括一个 moveToTrash() 方法和一个 moveToTrashAsync() 方法。这些方法将文件或目录发送到系统垃圾桶,第一个方法以同步方式运行,第二个方法以异步方式运行(请参阅 AIR 文件基础知识 )。

例如,以下代码以同步方式将用户的文档目录中的 test.txt 文件移到系统垃圾桶:

var file = air.File.documentsDirectory.resolvePath("test.txt"); 
file.moveToTrash();
注: 在不支持可恢复垃圾桶文件夹概念的操作系统上,会立即删除文件。

创建临时文件

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

var temp = air.File.createTempFile();

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

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

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