写入磁盘

Adobe AIR 1.0 和更高版本

在 Web 浏览器中运行的应用程序只能与用户的本地文件系统进行有限的交互。Web 浏览器会实施安全策略,用于确保用户的计算机不会由于加载 Web 内容而被破坏。例如,通过 Flash Player 在浏览器中运行的 SWF 文件无法直接与用户计算机中的文件进行交互。可以将共享对象和 Cookie 写入用户的计算机,以便维护用户首选项和其他数据,但文件系统交互将受到此限制。由于 AIR 应用程序安装在本地,因此它们具有不同的安全协议,其中包括在本地文件系统间进行读取和写入的功能。

这一灵活性要求开发人员担负较高的责任。意外的应用程序不安全因素不仅会危害应用程序的功能,而且会危害用户计算机的完整性。为此,开发人员应阅读 开发人员的最佳安全做法

AIR 开发人员可以使用多个 URL 方案协议来访问文件并将文件写入本地文件系统:

URL 方案

说明

app:/

应用程序目录的别名。从此路径访问的文件被分配到应用程序沙箱中,并由运行时授予完全权限。

app-storage:/

本地存储目录的别名,由运行时进行标准化。从此路径访问的文件被分配到非应用程序沙箱中。

file:///

表示用户硬盘的根目录的别名。如果从此路径访问的文件位于应用程序目录中,则该文件会被分配到应用程序沙箱中,否则将被分配到非应用程序沙箱中。

注: AIR 应用程序无法使用 app: URL 方案修改内容。此外,由于管理员设置,只可以读取应用程序目录。

除非用户计算机存在管理员限制,否则 AIR 应用程序有权写入用户硬盘上的任意位置。建议开发人员使用 app-storage:/ 路径作为与其应用程序相关的本地存储。从应用程序写入 app-storage:/ 的文件将放在标准位置中:

  • 在 Mac OS 中:应用程序的存储目录为 <appData>/<appId>/Local Store/ ,其中 <appData> 表示用户的首选文件夹。通常为 /Users/<user>/Library/Preferences

  • 在 Windows 中:应用程序的存储目录为 <appData>\<appId>\Local Store\ ,其中 <appData> 表示用户的 CSIDL_APPDATA 特殊文件夹。通常为 C:\Documents and Settings\<userName>\Application Data

  • 在 Linux 中为 <appData>/<appID>/Local Store/ ,其中 <appData> /home/<user>/.appdata

如果应用程序设计用于与用户文件系统中的现有文件进行交互,请确保阅读 开发人员的最佳安全做法