Adobe
产品
Acrobat
Creative Cloud
创意套装
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
更多产品
解决方案
数字营销
数字媒体
教育
金融服务业
政府部门
网页体验管理
更多解决方案
学习帮助下载公司
商店
在线商店
批量许可
查找经销商
搜索
 
信息 登录
欢迎,我的支持
我的帐户
注销
为何登录?登录后可以管理您的帐户,访问试用版下载、产品扩展和社区区域等。
Adobe
产品 分类 购买   搜索  
解決方案 公司
学习
登录 注销 我的货物 我的支持
Date Date
Qty:
Subtotal
Checkout
Adobe 开发者中心 / Adobe AIR 开发人员中心 /

探索 Adobe AIR 2 中新增的文件功能

作者 Christian Cantrell

Christian Cantrell
  • blogs.adobe.com/cantrell

创建日期

17 November 2009

页面工具

在 Facebook 上共享
在 Twitter 上共享
在 LinkedIn 上共享
书签
打印

Tags

要求

必备知识

本文面向可以使用 ActionScript 3 并且至少基本理解 TCP 套接字的开发人员。

用户级别

中级

必需产品

  • Adobe AIR

与运行基于浏览器的网络应用程序相比,运行 AIR 桌面应用程序最大的优势之一是在桌面上安装应用程序所带来的丰富功能。例如,AIR 应用程序可以创建通知,更改停放或系统栏图标,当然,还能访问文件系统。

AIR 1.0 提供一整套文件 API,它们使开发人员能从文件系统进行读写;移动、复制和删除文件;遍历目录;打开本机文件选取器对话框等等。AIR 1.1 为 File 类添加了 spaceAvailable 属性,使开发人员能决定给定卷上的可用空间。AIR 2 通过增加以下功能,进一步扩展了文件 API:

  • 使用文件的默认注册应用程序打开它们。
  • 将文件标记为“已下载”,这样一些操作系统会在用户第一次打开它们之前警告用户。
  • 收到已安装和已卸下存储卷的通知,并查询那些卷的信息。

本文涵盖以下主题:

  • 启动文件的默认应用程序
  • 将文件标记为已下载
  • 监听已安装卷和访问卷信息
  • 范例应用程序:FileTile

启动文件的默认应用程序

AIR 2 将函数 openWithDefaultApplication 添加到 File 类。为某个文件调用 openWithDefaultApplication 将打开操作系统为这个文件关联的任何应用程序,然后激活该应用程序。例如,如果文件实例指向一个 Microsoft Word 文档,调用 openWithDefaultApplication 将打开 Microsoft Word 并载入引用的文件;或者,为某个图像调用 openWithDefaultApplication 可能使用 Photoshop 或其他默认图像应用程序打开该图像。

使用 openWithDefaultApplication 函数之前,应注意以下警告:

  • 不引用与相应的应用程序关联的文件则无法打开该应用程序。
  • 只能从应用程序沙箱内运行的代码调用 openWithDefaultApplication 函数。如果从应用程序沙箱外运行的代码调用它,将引发一个安全错误。
  • openWithDefaultApplication 函数在打开后不提供与已启动进程的任何通信方式。如果需要启动一个外部进程并随后与它通信,请参阅新的 AIR 2 中的 NativeProcess API。
  • AIR 运行时在将文件传递给关联的应用程序之前不会验证文件,所以如果文件扩展名不正确,为处理文件而启动的应用程序可能无法读取它。
  • 无法直接使用 openWithDefaultApplication 函数启动可执行文件。为了保留 Adobe AIR 应用程序的平台独立性质,您必须将新增的 AIR 2 中的 NativeProcess API 与本机安装程序结合使用,从 AIR 启动可执行文件。
  • 如果对没有默认关联应用程序的文件调用 openWithDefaultApplication,将引发一个运行时错误。如果应用程序允许这一情况,请务必在代码找出这个错误并妥善处理。
  • 如果对一个目录调用 openWithDefaultApplication,它将在默认文件资源管理器应用程序中打开(Finder、Windows 资源管理器、Nautilus 等)。

以下代码说明如何在 Mac OS X 上打开一个 Keynote 演示文稿:

var presentation:File = File.documentsDirectory.resolvePath("Presentations/MAX_2009.key"); presentation.openWithDefaultApplication();

openWithDefaultApplication 既是平台独立的,也是用户独立的,因为它使用与引用的文件类型关联的任何应用程序打开文件。例如,对一个 MP3 文件调用 openWithDefaultApplication 可能在 Mac OS X 上打开 iTunes,在 Windows 上打开 Windows Media 或在 Linux 上打开 VLC。

将文件标记为已下载

AIR 2 还为 File 类添加了 downloaded 属性,它允许 AIR 应用程序指定是否通过网络下载文件。在某些操作系统上,如果将该属性设置为 true,用户在第一次尝试打开文件时会收到安全通知。例如,当用户打开一个通过 Mac OS X 上的 Safari 下载的文件时,操作系统会在实际打开此文件之前显示一个对话框,要求用户确认。将文件保存到通过网络(例如,FTP 客户端)下载的 AIR 应用程序时,最好将该属性设置为 true。

注意:通过 FileReference.download 方法下载的文件会自动标记为已下载。

downloaded 属性只适用于 Windows XP SP2 和更高版本(包括 Vista 和 Windows 7)以及 Mac OS 10.5 (Leopard) 和更高版本。Linux 目前还不支持该属性;因此,在 Linux 上运行的应用程序中设置该属性无效。

以下代码说明如何为一个从网络下载并保存在本地的文件将 downloaded 属性设置为 true:

var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, function(e:Event):void { var air:File = File.userDirectory.resolvePath("Downloads/AdobeAIR.dmg"); var fs:FileStream = new FileStream(); fs.open(air, FileMode.WRITE); fs.writeBytes(loader.data); fs.close(); air.downloaded = true; }); var req:URLRequest = new URLRequest("http://airdownload.adobe.com/air/mac/download/latest/AdobeAIR.dmg"); loader.load(req);

监听已安装卷和访问卷信息

AIR 2 中为文件系统 API 添加的最后一项提供了安装和卸下存储卷的监听功能以及存储卷的信息查询功能。例如,如果应用程序需要知道 USB Flash 驱动器的插入时间、网络驱动器的安装时间或数码相机的连接时间,则可以监听 StorageVolumeChangeEvent 并由应用程序作出回应。

要在安装和卸下存储卷时收到通知,为 StorageVolumeInfo singleton 实例添加一个事件监听器,如下:

StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount); StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount);

StorageVolumeChangeEvent 包含对刚安装的 StorageVolume 的引用(如果对卸下的卷触发 StorageVolumeChangeEvent,storageVolume 属性为 null)。StorageVolume 类提供包含存储卷信息的几个属性,如:

  • fileSystemType
  • isRemovable
  • isWritable
  • drive
  • name
  • rootDirectory

注意:drive 属性指 Windows 上的盘符,在 Mac 上为 null。name 属性指 Mac 和 Windows 上的卷名。

要获得安装的存储卷的相关信息,并不一定总要监听 StorageVolumeChangeEvent;StorageVolumeInfo 类上的 getStorageVolumes 函数可以返回安装的存储卷的矢量。以下代码说明如何获取所有已安装存储卷的列表:

var volumes:Vector. = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for each (var volume:StorageVolume in volumes) { trace(volume.name, volume.rootDirectory.nativePath); }

FileTile:新增的 AIR 2 文件系统 API 的实际操作情况

图 1 中所示的 FileTile 是我编写的一个范例应用程序,它用于说明新增的 AIR 2 文件系统 API。它是一个用于浏览存储卷的实用程序,如显示为存储卷的 Flash 驱动器和数码相机。您可以从 Adobe 实验室安装 FileTile 或从 Google Code下载完整的源代码。

FileTile 应用程序
图 1.FileTile 应用程序

后续工作

本文涵盖 AIR 2 中的所有新增文件功能。有关更多信息,请参阅:

  • AIR 2 中的新增存储卷 API 演示
  • Google Code 上的 FileTile
  • Adobe AIR 开发人员中心的 FileTile 范例应用程序

Tutorials & Samples

Tutorials

  • Retrieving a list of network interfaces in Adobe AIR 2
  • Using the AIR 2 NativeProcess API to create a screen recorder
  • Writing multiscreen AIR apps
  • Resolving DNS records in Adobe AIR 2

Samples

  • Using the Salesbuilder Adobe AIR sample application

Adobe AIR Forums

More
04/11/2012 Surround sound 5.1 with Air 3.2 on desktop app?
12/12/2011 Live Streaming H.264 Video on iOS using AIR
04/17/2012 HTMLLoader - Google Maps?
04/12/2012 Tabindex in forms on mobile?

Adobe AIR Blog

More
05/15/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2 Slides and...
05/14/2012 Adobe Flash Platform Runtime and SDK Archives
05/14/2012 Monster’s Socks on the iPad with Adobe AIR
05/10/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2

产品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • 移动应用程序
  • Photoshop
  • Touch Apps

解决方案

  • 数字营销
  • 数字媒体
  • 网页体验管理

行业

  • 教育
  • 金融服务业
  • 政府部门

帮助

  • 产品帮助中心
  • 订货和退货
  • 下载和安装
  • 我的 Adobe

学习

  • Adobe 开发人员连接
  • Adobe TV
  • 培训和认证
  • 论坛
  • 设计中心

购买方式

  • 在线商店
  • 批量许可
  • 查找经销商

下载

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

公司

  • 新闻编辑室
  • 合作伙伴计划
  • 公司社会责任
  • 工作机会
  • 投资者关系
  • 事件
  • 法律
  • 安全
  • 联系 Adobe
选择您的地区 中国(更改)
选择您的地区 关闭

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

使用条款 | 隐私政策和 Cookies (更新)

京 ICP 备 10217899 号 京公网安备 110105010404