使用文件

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() 方法可以在系统临时目录中创建唯一的临时目录。

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