`
shuaiqixiao4
  • 浏览: 54240 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类

Air File类使用方法

    博客分类:
  • FLEX
阅读更多
air file 系统中文件或目录的指针
2010-06-01 11:29

File 对象是指向文件系统中文件或目录的指针。

File 类扩展了 FileReference 类。在 Adobe® Flash® Player 和 AIR 中可用的 FileReference 类表示指向文件的指针,但 File 类添加了一些属性和方法,出于安全方面的考虑,Flash Player 中(在浏览器中运行的 SWF 文件中)未公开这些属性和方法。

关于 File 类

您可以使用 File 类执行以下操作:

    *

      获取特殊目录的路径,包括用户目录、用户的文档目录、应用程序的启动目录以及应用程序目录
    *

      复制文件和目录
    *

      移动文件和目录
    *

      删除文件和目录(或将它们移到垃圾桶)
    *

      列出目录中包含的文件和目录
    *

      创建临时文件和文件夹

当 File 对象指向文件路径后,您可以通过 FileStream 类使用该 File 对象读取和写入文件数据。

File 对象可以指向尚不存在的文件或目录的路径。创建文件或目录时可以使用这种 File 对象。
File 对象的路径

每个 File 对象具有两个属性,各属性可分别定义该对象的路径:

属性


说明

nativePath


指定文件在特定平台上的路径。例如,在 Windows 中,路径可能是“c:\Sample directory\test.txt”,而在 Mac OS 中,路径可能是“/Sample directory/test.txt”。nativePath 属性在 Windows 中使用反斜杠 (\) 字符作为目录分隔符,在 Mac OS 中使用正斜杠 (/) 字符。

url


此属性可以使用 file URL 方案指向文件。例如,在 Windows 中,路径可能是“file:///c:/Sample%20directory/test.txt”,而在 Mac OS 中,路径可能是“file:///Sample%20directory/test.txt”。除 file 之外,运行时还包括其他特殊 URL 方案,在支持的 URL 方案中将予以介绍

File 类包括用于指向 Mac 和 Windows 中的标准目录的属性。
将 File 对象指向目录

可以采用多种不同方式设置 File 对象以使其指向某目录。
指向用户的主目录

您可以将 File 对象指向用户的主目录。在 Windows 中,主目录是“My Documents”目录(例如,“C:\Documents and Settings\userName\My Documents”)的父级。在 Mac OS 中,它是 Users/userName 目录。以下代码将设置 File 对象以使其指向主目录中的 AIR Test 子目录:

var file = air.File.userDirectory.resolvePath("AIR Test");

指向用户的文档目录

您可以将 File 对象指向用户的文档目录。在 Windows 中,此目录通常是“My Documents”目录(例如,“C:\Documents and Settings\userName\My Documents”)。在 Mac OS 中,它是 Users/userName/Documents 目录。以下代码设置 File 对象以指向文档目录中的 AIR Test 子目录:

var file = air.File.documentsDirectory.resolvePath("AIR Test");

指向桌面目录

您可以使 File 对象指向桌面。以下代码设置 File 对象以使其指向桌面的 AIR Test 子目录:

var file = air.File.desktopDirectory.resolvePath("AIR Test");

指向应用程序存储目录

您可以使 File 对象指向应用程序存储目录。对于每个 AIR 应用程序,有一个唯一的关联路径用于定义应用程序存储目录。此目录对每个应用程序和用户是唯一的。您可能希望使用此目录存储特定于用户、特定于应用程序的数据(如用户数据或首选参数文件)。例如,以下代码将使 File 对象指向应用程序存储目录中包含的首选参数文件 prefs.xml:

var file = air.File.applicationStorageDirectory;
file = file.resolvePath("prefs.xml");

应用程序存储目录的位置由用户名、应用程序 ID 和发布者 ID 共同确定:

    *

      在 Mac OS 中,位于:

      /Users/user name/Library/Preferences/applicationID.publisherID/Local Store/

      例如:

      /Users/babbage/Library/Preferences/com.example.TestApp.02D88EEED35F84C264A183921344EEA353A629FD.1/Local Store

    *

      在 Windows 中,位于 Documents and Settings 目录下的以下位置:

      user name/Application Data/applicationID.publisherID/Local Store/

      例如:

      C:\Documents and Settings\babbage\Application Data\com.example.TestApp.02D88EEED35F84C264A183921344EEA353A629FD.1\Local Store

通过 File.applicationStorageDirectory 创建的 File 对象的 URL(和 url 属性)将使用 app-storage URL 方案(请参阅支持的 URL 方案),如下所示:

var dir = air.File.applicationStorageDirectory;
dir = dir.resolvePath("prefs.xml");
air.trace(dir.url); // app-storage:/preferences

指向应用程序目录

您可以使 File 对象指向应用程序的安装目录,即应用程序目录。您可以使用 File.applicationDirectory 属性引用此目录。您可以使用此目录检查应用程序描述符文件或与应用程序一起安装的其他资源。例如,以下代码将使 File 对象指向应用程序目录中名为 images 的目录:

var dir = air.File.applicationDirectory;
dir = dir.resolvePath("images");

通过 File.applicationDirectory 创建的 File 对象的 URL(和 url 属性)将使用 app URL 方案(请参阅支持的 URL 方案),如下所示:

var dir = air.File.applicationDirectory;
dir = dir.resolvePath("images");
air.trace(dir.url); // app:/images

指向文件系统根目录

File.getRootDirectories() 方法列出所有根卷,如 Windows 计算机中的 C: 和已装好的卷。在 Mac 中,此方法始终返回计算机的唯一根目录(“/”目录)。
指向明确的目录

通过设置 File 对象的 nativePath 属性,可以使 File 对象指向某个明确的目录,如以下示例中所示(在 Windows 中):

var file = new air.File();
file.nativePath = "C:\\AIR Test\";

导航到相对路径

您可以使用 resolvePath() 方法获取相对于其他给定路径的路径。例如,以下代码将设置 File 对象以使其指向用户主目录中的“AIR Test”子目录:

var file = air.File.userDirectory;
file = file.resolvePath("AIR Test");

您还可以使用 File 对象的 url 属性以使该对象指向基于 URL 字符串的目录,如下所示:

var urlStr = "file:///C:/AIR Test/";
var file = new air.File()
file.url = urlStr;

有关详细信息,请参阅修改文件路径。
让用户浏览以选择目录

File 类包括 browseForDirectory() 方法,它表示系统对话框,在该对话框中用户可以选择要分配给对象的目录。browseForDirectory() 方法为异步方法。如果用户选择一个目录并单击“打开”按钮,它将调度一个 select 事件;或者如果用户单击“取消”按钮,它将调度一个 cancel 事件。

例如,以下代码能使用户选择一个目录,并在选择后输出目录路径:

var file = new air.File();
file.addEventListener(air.Event.SELECT, dirSelected);
file.browseForDirectory("Select a directory");
function dirSelected(event) {
    alert(file.nativePath);
}

指向从中调用应用程序的目录

通过检查调用应用程序时所调度的 InvokeEvent 对象的 currentDirectory 属性,可以获取从中调用应用程序的目录位置。有关详细信息,请参阅捕获命令行参数。
将 File 对象指向文件

可采用多种不同方式设置 File 对象所指向的文件。
指向明确的文件路径

您可以使用 resolvePath() 方法获取相对于其他给定路径的路径。例如,以下代码设置 File 对象以使其指向应用程序存储目录中的 log.txt 文件:

var file:File = air.File.applicationStorageDirectory;
file = file.resolvePath("log.txt");

您可以使用 File 对象的 url 属性以使该对象指向基于 URL 字符串的文件或目录,如下所示:

var urlStr = "file:///C:/AIR Test/test.txt";
var file = new air.File()
file.url = urlStr;

您还可以将 URL 传递到 File() 构造函数,如下所示:

var urlStr = "file:///C:/AIR Test/test.txt";
var file = new air.File(urlStr);

url 属性始终返回 URL 的 URI 编码版本(例如,空格替换为 %20):

file.url = "file:///c:/AIR Test";
alert(file.url); // file:///c:/AIR%20Test

您还可以使用 File 对象的 nativePath 属性设置明确的路径。例如,在 Windows 计算机中运行以下代码,可以设置 File 对象以使其指向 C: 驱动器的 AIR Test 子目录中的 test.txt 文件:

var file = new air.File();
file.nativePath = "C:/AIR Test/test.txt";

您还可以将此路径传递到 File() 构造函数,如下所示:

var file = new air.File("C:/AIR Test/test.txt");

在 Windows 中,您可以使用正斜杠 (/) 或反斜杠 (\) 字符作为 nativePath 属性的路径分隔符。在 Mac OS 中,请使用正斜杠 (/) 字符作为 nativePath 属性的路径分隔符:

var file = new air.File(/Users/dijkstra/AIR Test/test.txt");

有关详细信息,请参阅修改文件路径。
枚举目录中的文件

您可以使用 File 对象的 getDirectoryListing() 方法获取指向位于某目录根级的文件和子目录的 File 对象数组。有关详细信息,请参阅枚举目录。
让用户浏览以选择文件

File 类包括以下方法,它们表示系统对话框,在该对话框中用户可以选择要分配给对象的文件:

    *

      browseForOpen()
    *

      browseForSave()
    *

      browseForOpenMultiple()

这些方法均为异步方法。当用户选择一个文件时(或者,对于 browseForSave() 选择一个目标路径时),browseForOpen() 和 browseForSave() 方法将调度 select 事件。对 browseForOpen() 和 browseForSave() 方法,在进行选择后目标 File 对象将指向所选的文件。当用户选择多个文件时,browseForOpenMultiple() 方法调度一个 selectMultiple 事件。selectMultiple 事件的类型是 FileListEvent,它具有一个 files 属性,该属性是一个 File 对象数组(指向所选的文件)。

例如,以下代码向用户显示“Open”对话框,在该对话框中用户可以选择文件:

var fileToOpen = air.File.documentsDirectory;
selectTextFile(fileToOpen);

function selectTextFile(root)
{
    var txtFilter = new air.FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml");
    root.browseForOpen("Open", new window.runtime.Array(txtFilter));
    root.addEventListener(air.Event.SELECT, fileSelected);
}

function fileSelected(event)
{
    trace(fileToOpen.nativePath);
}

当您调用浏览方法时,如果应用程序已打开了其他浏览器对话框,则运行时会引发一个错误异常。
修改文件路径

通过调用 resolvePath() 方法或通过修改对象的 nativePath 或 url 属性,您还可以修改现有 File 对象的路径,如以下示例中所示(在 Windows 中):

file1 = air.File.documentsDirectory;
file1 = file1.resolvePath("AIR Test");
alert(file1.nativePath); // C:\Documents and Settings\userName\My Documents\AIR Test
var file2 = air.File.documentsDirectory;
file2 = file2.resolvePath("..");
alert(file2.nativePath); // C:\Documents and Settings\userName
var file3 = air.File.documentsDirectory;
file3.nativePath += "/subdirectory";
alert(file3.nativePath); // C:\Documents and Settings\userName\My Documents\subdirectory
var file4 = new air.File();
file.url = "file:///c:/AIR Test/test.txt"
alert(file3.nativePath); // C:\AIR Test\test.txt

当使用 nativePath 属性时,在 Windows 中使用正斜杠 (/) 或反斜杠 (\) 字符作为目录分隔符;在 Mac OS 中使用正斜杠 (/) 字符。在 Windows 中,切记在字符串文本中键入反斜杠字符两次。
支持的 URL 方案

定义 File 对象的 url 属性时,可以使用以下任一 URL 方案:

URL 方案


说明

file


用于指定相对于文件系统根目录的路径。例如:

file:///c:/AIR Test/test.txt

URL 标准规定 file URL 采用 file://<host>/<path> 形式。作为一个特例,<host> 可以是空字符串,它被解释为“解释该 URL 的计算机”。因此,file URL 通常具有三个斜杠 (///)。

app


用于指定相对于所安装应用程序的根目录(该目录包含所安装应用程序的 application.xml 文件)的路径。例如,以下路径指向所安装应用程序的目录的 images 子目录:

app:/images

app-storage


用于指定相对于应用程序存储目录的路径。对于每个安装的应用程序,AIR 定义了一个唯一的应用程序存储目录,此目录对于存储特定于该应用程序的数据很有用。例如,以下路径指向应用程序存储目录的 settings 子目录中的 prefs.xml 文件:

app-storage:/settings/prefs.xml

查找两个文件之间的相对路径

您可以使用 getRelativePath() 方法查找两个文件之间的相对路径:

var file1 = air.File.documentsDirectory
file1 = file1.resolvePath("AIR Test");
var file2 = air.File.documentsDirectory
file2 = file2.resolvePath("AIR Test/bob/test.txt");

alert(file1.getRelativePath(file2)); // bob/test.txt

getRelativePath() 方法的第二个参数 useDotDot 允许在结果中返回 .. 语法,以指示父目录:

var file1 = air.File.documentsDirectory;
file1 = file1.resolvePath("AIR Test");
var file2 = air.File.documentsDirectory;
file2 = file2.resolvePath("AIR Test/bob/test.txt");
var file3 = air.File.documentsDirectory;
file3 = file3.resolvePath("AIR Test/susan/test.txt");

alert(file2.getRelativePath(file1, true)); // ../..
alert(file3.getRelativePath(file2, true)); // ../../bob/test.txt

获取文件名的规范版本

文件名和路径名通常不区分大小写。在以下示例中,两个 File 对象指向同一个文件:

File.documentsDirectory.resolvePath("test.txt");
File.documentsDirectory.resolvePath("TeSt.TxT");

不过,文档和目录名确实包括大小写。例如,以下代码假定在文档目录中有一个名为 AIR Test 的文件夹,如以下示例中所示:

var file = air.File.documentsDirectory;
file = file.resolvePath("AIR test");
trace(file.nativePath); // ... AIR test
file.canonicalize();
alert(file.nativePath); // ... AIR Test

canonicalize 方法可转换 nativePath 对象,以对文件名或目录名使用正确的大小写。

在 Windows 中,您还可以使用 canonicalize() 方法将短文件名(“8.3”名称)转换为长文件名,如以下示例中所示:

var path = new air.File();
path.nativePath = "C:\\AIR~1";
path.canonicalize();
alert(path.nativePath); // C:\AIR Test

使用包和符号链接

多种操作系统支持包文件和符号链接文件:

包在 Mac OS 中,目录可以指定为包并作为单个文件而不是目录显示在 Mac OS Finder 中。

符号链接符号链接允许一个文件指向磁盘上的其他文件或目录。尽管符号链接与别名类似,不过它们并不相同。别名始终报告为文件(而不是目录),读取或写入别名或快捷方式从不影响它指向的原始文件或目录。另一方面,符号链接的行为则完全与它指向的文件或目录类似。它可以报告为文件或目录,读取或写入符号链接将会影响它指向的文件或目录,而不影响符号链接本身。

File 类包括 isPackage 和 isSymbolicLink 属性,用于检查 File 对象是否引用包或符号链接。

以下代码将遍历用户的桌面目录,列出不是 包的子目录:

var desktopNodes = air.File.desktopDirectory.getDirectoryListing();
for (i = 0; i < desktopNodes.length; i++) 
{
    if (desktopNodes[i].isDirectory && !!desktopNodes[i].isPackage)
    {
        air.trace(desktopNodes[i].name);
    }
}

以下代码将遍历户的桌面目录,列出不是 符号链接的文件和目录:

var desktopNodes = air.File.desktopDirectory.getDirectoryListing();
for (i = 0; i < desktopNodes.length; i++) 
{
    if (!desktopNodes[i].isSymbolicLink)
    {
        air.trace(desktopNodes[i].name);
    }
}

canonicalize() 方法可更改符号链接的路径,以指向该链接所引用的文件或目录。以下代码将遍历用户的桌面目录,报告由是符号链接的文件引用的路径:

var desktopNodes = air.File.desktopDirectory.getDirectoryListing();
for (i = 0; i < desktopNodes.length; i++) 
{
    if (desktopNodes[i].isSymbolicLink)
    {
        var linkNode = desktopNodes[i];
        linkNode.canonicalize();
        air.trace(desktopNodes[i].name);
    }
}

确定卷上的可用空间

File 对象的 spaceAvailable 属性是 File 位置的可用空间(以字节为单位)。例如,以下代码检查应用程序存储目录中的可用空间:

air.trace(air.File.applicationStorageDirectory.spaceAvailable);

如果 File 对象引用一个目录,则 spaceAvailable 属性将指示可供文件使用的目录空间。如果 File 对象引用一个文件,则 spaceAvailable 属性将指示可供该文件使用的空间。如果 File 位置不存在,则 spaceAvailable 属性将设置为 0。如果 File 对象引用一个符号链接,则 spaceAvailable 属性将设置为符号链接指向的位置的可用空间。

通常,目录或文件的可用空间与包含该目录或文件的卷上的可用空间相同。不过,可用空间与磁盘配额及每个目录的空间限制有关。

将文件或目录添加到卷中通常需要比文件的实际大小或目录中内容的实际大小更多的空间。例如,操作系统可能需要更多空间来存储索引信息。或者,所需的磁盘扇区可能会使用额外的空间。此外,可用空间是动态变化的。因此,您不能期望为文件存储分配报告的全部空间。有关写入文件系统的信息,请参阅读取和写入文件。
分享到:
评论

相关推荐

    使用AIR中的File对象

    除了这些基本操作,`File`对象还可以与其他类结合使用,如`FileStream`,实现更复杂的文件操作。例如,我们可以通过`FileStream`读取或写入文件内容,或者使用`FileFilter`来指定打开或保存对话框时的文件类型。 在...

    file2air-1.1.tgz

    使用file2air进行攻击行为是非法的,并可能导致法律后果。网络安全研究人员应当遵循道德规范,仅在合法授权的范围内进行测试和研究。 总之,file2air-1.1.tgz是无线网络安全领域的一个重要研究对象,理解其工作...

    AIR操作file的例子

    主要是关于AIR操作本地文件夹的例子。 功能: 通过选择的图片生成一个新的swf图片浏览器 并且有本地打开和本地保存功能 操作: 打开按钮 可以单选和多选图片 然后点保存 可以把生成的swf保存到指定路径 然后关闭窗口...

    使用air读取本地文件并插入到sqlite数据库

    1. **读取本地文件**:在AIR应用中,你可以使用File类来访问本地文件系统。首先,你需要创建一个File对象,指定文件的路径,然后使用File.read()方法读取文件内容。例如: ```actionscript var file:File = new ...

    flex4.6 air 读写文本文件

    要读取文本文件,我们首先需要在Flex项目中引入`File`和`FileStream`类。这两个类分别属于`flash.filesystem`命名空间,它们是读写文件的核心工具。在ActionScript代码中,你可以这样导入它们: ```actionscript ...

    AIR2.0调用应用程序

    NativeProcess API包括了NativeProcess、NativeProcessStartupInfo、File和FileStream等类,这些类提供了启动和管理原生进程所需的功能。 例如,使用NativeProcessStartupInfo类,开发者可以设置要执行的程序路径、...

    Flash+Flex+Air移动开发入门经典 pdf

    7.1.1 file和filestream类 192 7.1.2 创建files explorer app示例 195 7.2 修改文件和文件系统 207 7.3 利用浏览对话框 220 7.3.1 打开单个文件 220 7.3.2 打开多个文件 221 7.3.3 将单个文件保存到某个位置 ...

    flash air 打开本地文件

    请注意,这个例子是基于桌面环境的,对于移动设备,你可能需要使用不同的方法来启动默认应用程序,因为Android和iOS可能有不同的API来处理这个问题。 总的来说,Flash Air通过提供对本地文件系统和操作系统功能的...

    AIR入门(一)

    在ActionScript中,可以使用`NativeApplication`类来访问本地文件系统,`File`类用于处理文件操作,`SharedObject`用于本地数据存储。 六、进阶学习 随着对AIR的理解加深,你可以尝试使用Flex框架构建更复杂的用户...

    adobe AIR Hello World

    3. **An AIR Descriptor File (ADL)**:每个AIR应用都有一个XML格式的描述符文件,即`.air`或`.app`文件。这个文件定义了应用的基本信息,如版本、图标、所需权限等。在"Hello World"应用中,描述符文件会指定启动...

    使用FlexBuilder3制作并导出AIR1.0正式版应用

    7. **打包和签名**: 完成开发后,选择“发布”选项,FlexBuilder3会生成AIRI文件(AIR Installable File)。如果需要发布到公共平台,还需要对应用进行签名,以确保安全性和可信任性。 8. **导出AIR1.0正式版**: ...

    AIR 的本地数据库访问

    例如,要创建一个新表,你可以使用`execute()`方法: ```actionscript sqlStat.text = "CREATE TABLE IF NOT EXISTS Users (id INTEGER PRIMARY KEY, name TEXT)"; sqlStat.execute(); ``` 对于插入数据,可以使用...

    fckEditor air内容编辑器的使用以及在air中使用

    - 在AIR环境中,fckEditor可能无法直接访问本地文件系统,需要使用AIR的File类来读写文件。 - 考虑到安全性,确保对用户上传的文件进行适当的验证和过滤,防止XSS攻击。 - 由于fckEditor是基于浏览器技术的,所以它...

    flex Air 打包

    4. **An AIR Descriptor File (app.xml)**:这是每个AIR应用的核心配置文件,定义了应用的基本信息,如应用名称、版本、图标、权限和所需的最低AIR版本等。开发者需要编辑这个文件来定制他们的应用程序设置。 5. **...

    AIR运行exe外调程序

    首先,理解AIR运行exe程序的基本原理:AIR提供了NativeProcess类,它是用来与操作系统本地进程进行交互的核心工具。通过创建NativeProcess对象,可以启动一个本地可执行文件(如.exe文件),并且能够监听其标准输入...

    Flex 的 Adobe AIR快速入门

    - **文件读写**: 使用File类的方法读取和保存文本文件到磁盘。 4. **压缩文件和数据** - **数据压缩**: 使用Zip类或者第三方库来压缩文件或数据,这对于减少存储空间或网络传输量非常有用。 5. **在Adobe AIR...

    flex air案例

    【Flex Air案例】这篇教程是针对对Adobe Integrated Runtime (AIR)...对于初学者来说,这是一个很好的起点,通过实践可以进一步熟悉Flex和AIR的开发环境及工具使用。随着经验的积累,你可以探索更复杂的桌面应用开发。

    AIR应用开发中文指南

    ### Adobe Integrated Runtime (AIR) 应用开发中文指南知识点总结 ...通过以上知识点的总结,我们可以更全面地理解如何使用 Adobe Integrated Runtime (AIR) 构建跨平台的桌面应用程序,并掌握其核心技术与实践方法。

    FilePane使用教程.docx

    **FilePane使用教程** FilePane是一款专为Mac OS平台设计的高效工具,它极大地简化了用户在处理文本和图片时的复制、粘贴操作。通过FilePane,你可以无需复杂的键盘快捷键,只需简单的拖放动作就能完成文件和信息的...

Global site tag (gtag.js) - Google Analytics