`
lxs647
  • 浏览: 523314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex:air file 系统中文件或目录的指针

 
阅读更多

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() 方法或通过修改对象的 nativePathurl 属*,您还可以修改现有 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 类包括 isPackageisSymbolicLink 属*,用于检查 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 属*将设置为符号链接指向的位置的可用空间。

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

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

来自: http://hi.baidu.com/franky23/blog/item/b3f53f6f6925a2d680cb4a74.html

http://www.flashlook.net/Html/News/201103/1620.html

分享到:
评论

相关推荐

    flex4.6 air 读写文本文件

    在Flex 4.6与Adobe Integrated Runtime (AIR)的开发中,读写文本文件是一项基本操作,对于初学者来说尤其重要。本教程将详细介绍如何在Flex应用中实现这一功能,以便用户可以对本地的文本文件进行读取、修改以及保存...

    flex air中文官方帮助文档

    安装Flex Air SDK和集成开发环境(IDE)如Flash Builder或IntelliJ IDEA,是开始Flex Air开发的第一步。文档会详细指导如何下载安装这些工具,并配置环境变量,确保编译器和调试器的正常工作。 三、Flex Builder的...

    flex air 本地文件管理器

    《Flex Air 本地文件管理器:打造Windows系统式的文件操作体验》 在现代软件开发领域,Adobe Flex Air技术提供了一种强大的跨平台解决方案,使得开发者能够构建与桌面系统深度集成的应用程序。尤其在本地文件管理...

    flex air开发指南

    - **技术栈**:AIR 支持多种技术栈,包括: - Flash/Flex/ActionScript - HTML/JavaScript/CSS/Ajax - PDF 可嵌入到任何应用程序中 - **应用场景**:AIR 应用程序可以基于不同的技术构建,例如: - 基于 Flash ...

    flex air 博客管理系统

    2. **Adobe AIR (Adobe Integrated Runtime)**:AIR是一个跨平台的运行环境,允许开发者使用Web技术(如HTML、JavaScript、Flash/Flex)创建桌面应用程序。它将Web应用程序的灵活性与桌面应用程序的特性相结合,如...

    Flex Air压缩和读取zip文件

    Flex Air压缩和读取zip文件是一项在开发过程中经常会遇到的任务,尤其在处理大量数据或文件传输时。这个主题主要涉及到Flex、Adobe AIR以及ZipArchive库的使用。让我们深入了解一下这些概念和技术。 首先,Flex是一...

    Flex AIR物业管理系统

    同时,Flex SDK中的Flex Compiler负责将源代码编译成AIR应用程序,然后通过Adobe AIR SDK打包成可执行文件,方便最终用户安装和使用。 在压缩包文件“Property”中,可能包含了项目的所有源代码、资源文件、配置...

    flex air 导出 excel

    在Flex Air中,有时我们需要将数据导出为Excel格式,以便用户可以进行离线分析或进一步处理。然而,需要注意的是,Flex Air原生并不直接支持导出包含中文字符的Excel文件,这可能是由于早期版本的Excel文件格式处理...

    flex开发系列书籍:AIR RIA开发

    【标题】:“flex开发系列书籍:AIR RIA开发” 【描述】:“浅谈基于FLEX与AIR的RIA开发技术及应用.pdf” 【标签】:“flex” “RIA” “AIR” 【正文】: 富互联网应用程序(Rich Internet Applications, RIA)...

    flex Air 打包

    1. **Adobe AIR(Adobe Integrated Runtime)**:AIR是Adobe公司推出的一个运行环境,它让Web开发者能够使用HTML、CSS、JavaScript或Flex技术构建桌面应用程序。AIR提供了与操作系统更深入的交互能力,如访问本地...

    Flex4 Air 多窗口 自动更新

    2. **Adobe AIR (Adobe Integrated Runtime)**:AIR允许开发者使用Web技术(如HTML、CSS、JavaScript或Flex)创建桌面应用程序,它可以访问本地操作系统资源,提供比Web应用更丰富的用户体验。在本项目中,AIR3.1...

    flex文件系统应用

    File类是Flex与本地文件系统交互的基础,它可以代表计算机上的任何文件或目录。你可以创建一个File对象来表示特定的文件路径,或者获取用户的文档、桌面等特殊位置。例如,`var file:File = new File("C:/example....

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

    3.1.1 在air应用程序描述符文件中设置属性 66 3.1.2 手动编辑hello world app的应用程序描述符文件 66 3.1.3 blackberry tablet os配置 76 3.1.4 为google android打包 79 3.1.5 为apple ios打包 85 3.1.6 为...

    Flex4 Air 自定义窗口

    AIR提供了本地桌面功能,如访问文件系统、桌面集成和离线运行等,极大地拓宽了Flex应用的使用场景。 在Flex4 AIR应用中实现自定义窗口,首先需要理解`NativeWindow`类。这个类是所有AIR桌面窗口的基础,它提供了...

    flex air开发中文教程

    对于AIR应用程序的开发,教程会涉及AIR SDK的使用,以及如何利用它提供的API来访问本地文件系统、网络、系统资源等。读者将学习到如何实现桌面特有的功能,比如拖放操作、桌面通知、离线存储等。 在实际项目开发中...

    Flex air 读写Excel文件

    在给定的“Flex air 读写Excel文件”的主题中,我们将深入探讨如何在Flex Air中处理Excel文件,特别是涉及到中文字符的读写以及多页操作。 在Flex Air中读写Excel文件,通常需要借助第三方库,因为Flex原生并不支持...

    flex air 单机版俄罗斯方块 flexbuilder项目文件

    flex air 单机版俄罗斯方块 小游戏 flexbuilder项目文件

    Java flex 开发air完整源码+文档

    【Java Flex 开发 AIR 完整源码及文档】是一个针对Java与Adobe Integrated Runtime (AIR)集成开发的资源包,包含完整的源代码和详细的开发指南。这个资源旨在帮助开发者掌握如何使用Java作为后端服务,与Adobe Flex...

    GIFPlayer for flex/air

    GIFPlayer是一款专门设计用于Flex和Adobe AIR环境的控件,其核心功能在于提供了一个强大的平台,使得开发者能够在Flex或Air应用程序中轻松地播放GIF动画。这款控件不仅支持常见的GIF动画,还可能包含一些高级特性,...

Global site tag (gtag.js) - Google Analytics