`
lixinye0123
  • 浏览: 336071 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

11.2 File对象的路径

阅读更多

File对象的路径<o:p></o:p>

每个File对象有两个属性定义路径:<o:p></o:p>

nativePath 指定特定平台文件路径。例如,在Windows上路径大概是"c:\Sample directory\test.txt" 而在Mac OS上应该是"/Sample directory/test.txt"。注意不同的操作系统目录分隔符是不同的。<o:p></o:p>

url 用URL格式定义文件路径。例如,在Windows上的路径大概是"file:///c:/Sample%20directory/test.txt"而在Mac OS 上是"file:///Sample%20directory/test.txt"。<o:p></o:p>

<o:p></o:p>

指向目录的File对象<o:p></o:p>

这里有几种方法设置指向一个目录的File对象。<o:p></o:p>

指向明确的目录<o:p></o:p>

设定File对象指定用户的home目录,在Windows,home目录就是"My Documents"目录的父目录(例如"C:\Documents and Settings\userName\My Documents")。在Mac OS上,就是Users/userName 目录。下面的代码设置File对象指向用户目录的一个AIR Test子目录:<o:p></o:p>

var file:File = File.userDirectory.resolvePath("AIR Test"); <o:p></o:p>

<o:p></o:p>

设置File对象指向用户的documents目录。在Windows上就是"My Documents"目录(如"C:\Documents and Settings\userName\My Documents"),在On Mac OS,上,就是Users/userName/Documents 目录,下面的代码设置File对象指向文档目录的子目录AIR Test:<o:p></o:p>

var file:File = File.documentsDirectory.resolvePath("AIR Test"); <o:p></o:p>

<o:p></o:p>

还可以指向桌面,下面的代码设置File对象指向桌面的AIR Test子目录:<o:p></o:p>

var file:File = File.desktopDirectory.resolvePath("AIR Test"); <o:p></o:p>

<o:p></o:p>

File对象还可指向应用程序的存储目录。每个AIR程序都有个独立的存储目录用于存储数据和配置文件。例如,下面的代码File对象指向配置文件prefs.xml,该文件保存在应用程序存储目录:<o:p></o:p>

var file:File = File.applicationStorageDirectory; <o:p></o:p>

file = file.resolvePath("prefs.xml"); <o:p></o:p>

<o:p></o:p>

File对象还可指向应用程序安装目录,通过File.applicationResourceDirectory属性指向应用程序资源目录。可用此目录检查应用程序描述文件或其他资源,例如下面的代码File对象指向资源目录的images子目录:<o:p></o:p>

var file:File = File.applicationResourceDirectory; <o:p></o:p>

file = file.resolvePath("images"); <o:p></o:p>

<o:p></o:p>

File.getRootDirectories()方法列出根目录卷标,如winodws上的C:,在Mac上为"/"目录。<o:p></o:p>

设置nativePath属性可指向明确的目录:<o:p></o:p>

var file:File = new File(); <o:p></o:p>

file.nativePath = "C:\\AIR Test\\"; <o:p></o:p>

<o:p></o:p>

resolvePath()方法获得相对路径,例如下面的代码获得用户目录的"AIR Test"子目录路径:<o:p></o:p>

var file:File = File.userDirectory; <o:p></o:p>

file = file.resolvePath("AIR Test"); <o:p></o:p>

<o:p></o:p>

还可通过url属性获得url格式的路径信息:<o:p></o:p>

var urlStr:String = "file:///C:/AIR Test/"; <o:p></o:p>

var file:File = new File() <o:p></o:p>

file.url = urlStr; <o:p></o:p>

 <o:p></o:p>

让用户浏览选择目录<o:p></o:p>

File类包含一个browseForDirectory()方法,会弹出一个系统对话框让用户选择目录,该方法是异步的,如果用户点击Open按钮它会触发select事件,否则触发cancel事件。<o:p></o:p>

例如,下面的代码让用户选择一个目录,然后输出该目录路径:<o:p></o:p>

var file:File = new File(); <o:p></o:p>

file.addEventListener(Event.SELECT, dirSelected); <o:p></o:p>

file.browseForDirectory(); <o:p></o:p>

function dirSelected(e:Event):void { <o:p></o:p>

    trace(file.nativePath); <o:p></o:p>

<o:p></o:p>

<o:p></o:p>

指向文件的File对象<o:p></o:p>

 有几种方法:<o:p></o:p>

指向明确的文件路径<o:p></o:p>

使用resolvePath()方法获得文件相对路径:<o:p></o:p>

var file:File = File.applicationStorageDirectory; <o:p></o:p>

file = file.resolvePath("log.txt"); <o:p></o:p>

<o:p></o:p>

使用url格式的路径:<o:p></o:p>

var urlStr:String = "file:///C:/AIR Test/test.txt"; <o:p></o:p>

var file:File = new File() <o:p></o:p>

file.url = urlStr; <o:p></o:p>

<o:p></o:p>

URL可作为构造函数参数:<o:p></o:p>

var urlStr:String = "file:///C:/AIR Test/test.txt"; <o:p></o:p>

var file:File = new File(urlStr); <o:p></o:p>

<o:p></o:p>

注意url属性总是返回URI编码的字符串(如空格转换为%20): <o:p></o:p>

file.url = "file:///c:/AIR Test"; <o:p></o:p>

trace(file.url); // file:///c:/AIR%20Test <o:p></o:p>

<o:p></o:p>

nativePath属性设置文件明确路径,例如下面的代码在windows中设置文件对象指向test.txt 文件:<o:p></o:p>

var file:File = new File(); <o:p></o:p>

file.nativePath = "C:/AIR Test/test.txt"; <o:p></o:p>

<o:p></o:p>

也可作为构造函数参数:<o:p></o:p>

var file:File = new File("C:/AIR Test/test.txt"); <o:p></o:p>

<o:p></o:p>

在Windows系统中分隔符既可以用(/) 也可以是(\) ,在Mac OS系统中只可以用(/):<o:p></o:p>

var file:File = new File(/Users/dijkstra/AIR Test/test.txt"); <o:p></o:p>

<o:p></o:p>

列举目录文件<o:p></o:p>

使用getDirectoryListing()方法获得文件和子目录数组。<o:p></o:p>

让用户选择文件<o:p></o:p>

File类包含下列方法打开系统对话框让用户选择文件:<o:p></o:p>

browseForOpen() <o:p></o:p>

browseForSave() <o:p></o:p>

browseForMultiple() <o:p></o:p>

例如,下面的代码演示用户点击Open对话框让用户选择文件:<o:p></o:p>

var fileToOpen:File = File.documentsDirectory; <o:p></o:p>

selectTextFile(fileToOpen); <o:p></o:p>

 <o:p></o:p>

function selectTextFile(root:File):void <o:p></o:p>

<o:p></o:p>

    var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); <o:p></o:p>

    root.browseForOpen("Open", [txtFilter]); <o:p></o:p>

    root.addEventListener(Event.SELECT, fileSelected); <o:p></o:p>

<o:p></o:p>

 <o:p></o:p>

function fileSelected(event:Event):void <o:p></o:p>

<o:p></o:p>

    trace(fileToOpen.nativePath); <o:p></o:p>

<o:p></o:p>

<o:p></o:p>

如果程序已经打开了一个该对话框,再次打开会抛出runtime异常。<o:p></o:p>

 <o:p></o:p>

修改文件路径<o:p></o:p>

可通过resolvePath()方法修改路径或修改nativePath及url属性:<o:p></o:p>

var file1:File = File.documentsDirectory; <o:p></o:p>

file1 = file1.resolvePath("AIR Test"); <o:p></o:p>

trace(file1.nativePath); // C:\Documents and Settings\userName\My Documents\AIR Test <o:p></o:p>

var file2:File = File.documentsDirectory; <o:p></o:p>

file2 = file2.resolvePath(".."); <o:p></o:p>

trace(file2.nativePath); // C:\Documents and Settings\userName <o:p></o:p>

var file3:File = File.documentsDirectory; <o:p></o:p>

file3.nativePath += "/subdirectory"; <o:p></o:p>

trace(file3.nativePath); // C:\Documents and Settings\userName\My Documents\subdirectory <o:p></o:p>

var file4:File = new File(); <o:p></o:p>

file.url = "file:///c:/AIR Test/test.txt" <o:p></o:p>

trace(file3.nativePath); // C:\AIR Test\test.txt <o:p></o:p>

<o:p></o:p>

支持URL模式<o:p></o:p>

 可使用下列任意URL格式定义File对象的url属性:<o:p></o:p>

file 指定相对于文件系统的路径:<o:p></o:p>

file:///c:/AIR Test/test.txt <o:p></o:p>

app-resource 指定相对于应用程序安装目录的相对路径,例如下面的images子目录位于程序安装目录之下:<o:p></o:p>

app-resource:/images <o:p></o:p>

app-storage 指定相对于程序储存目录的相对路径,每个安装的程序都有唯一的数据存储目录:app-storage:/settings/prefs.xml <o:p></o:p>

<o:p></o:p>

两个文件的相对路径<o:p></o:p>

使用getRelativePath()方法找出两个文件的相对路径:<o:p></o:p>

var file1:File = File.documentsDirectory.resolvePath("AIR Test"); <o:p></o:p>

var file2:File = File.documentsDirectory <o:p></o:p>

file2 = file2.resolvePath("AIR Test/bob/test.txt"); <o:p></o:p>

trace(file1.getRelativePath(file2)); // bob/test.txt <o:p></o:p>

<o:p></o:p>

第二个参数为true表示返回的结果中含有(..)路径表示法:<o:p></o:p>

var file1:File = File.documentsDirectory; <o:p></o:p>

file1 = file1.resolvePath("AIR Test"); <o:p></o:p>

var file2:File = File.documentsDirectory; <o:p></o:p>

file2 = file2.resolvePath("AIR Test/bob/test.txt"); <o:p></o:p>

var file3:File = File.documentsDirectory; <o:p></o:p>

file3 = file3.resolvePath("AIR Test/susan/test.txt"); <o:p></o:p>

 <o:p></o:p>

trace(file2.getRelativePath(file1, true)); // ../.. <o:p></o:p>

trace(file3.getRelativePath(file2, true)); // ../../bob/test.txt <o:p></o:p>

 <o:p></o:p>

获取正确的文件名<o:p></o:p>

文件和路径名是不区分大小写的,下面的两个File对象实际上指向同一个文件:<o:p></o:p>

File.documentsDirectory.resolvePath("test.txt"); <o:p></o:p>

File.documentsDirectory.resolvePath("TeSt.TxT"); <o:p></o:p>

<o:p></o:p>

然而,文件和目录名字确实包含大写字母的使用,例如假定文档目录中有一个目录叫AIR Test :<o:p></o:p>

var file:File = File.documentsDirectory.resolvePath("AIR test"); <o:p></o:p>

trace(file.nativePath); // ... AIR test <o:p></o:p>

file.canonicalize(); <o:p></o:p>

trace(file.nativePath); // ... AIR Test <o:p></o:p>

<o:p></o:p>

Canonicalize方法转换nativePath对象为正确的大小写字母。<o:p></o:p>

Canonicalize方法还可以把路径缩写转换为Windows下的长文件名:<o:p></o:p>

var path:File = new File(); <o:p></o:p>

path.nativePath = "C:\\AIR~1"; <o:p></o:p>

path.canonicalize(); <o:p></o:p>

trace(path.nativePath); // C:\AIR Test <o:p></o:p>

 <o:p></o:p>

 
分享到:
评论

相关推荐

    postgersql-11.2源码

    PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它以其强大的功能、高度的可扩展性和稳定性而闻名。本文将围绕“postgresql-11.2源码”这一主题,深入探讨其背后的数据库设计理念、源码结构以及编译...

    1.2 oracle 11.2.0.4常用操作说明书_20200709_v0.1.doc

    `exp` 用于将数据库对象(如表、索引、存储过程等)导出到二进制文件(`.dmp` 文件),在Windows环境下,可以使用如下格式的SQL语句进行用户级别的导出: ```sql exp test/test@test file=d:\daochu.dmp log=d:\...

    Oracle Database New Features Guide 11gRelease2(11.2)

    8. **SecureFile LOBs**:SecureFile LOB提供了更高效、安全的大型对象存储,支持压缩、加密和备份/恢复操作。 9. **Automatic Workload Repository (AWR)**:AWR的报告和分析功能进一步增强,有助于数据库性能诊断...

    Java基础入门教程 Java编程技术11 Java IO(2学时)(共30页).pptx

    例如,创建`File`对象,可以使用绝对路径、相对路径或父路径和子路径的组合。`File`类还提供了多种方法来检查文件的状态,如`exists()`、`canRead()`、`canWrite()`、`isFile()`、`isDirectory()`和`isAbsolute()`,...

    03.oracle_逻辑备份详解.doc

    - **FILE** 和 **LOG**:设定导出文件和日志文件的路径和名称。 - **QUERY**:在导出前对表执行查询,只导出满足条件的行。 - **FILESIZE**:设置每个数据文件的最大大小,以避免单个文件过大。 四、imp 用法: ...

    Oracle-建表空间-用户-导入DMP-设置密码不过期等工具

    CREATE TABLESPACE 表空间名 DATAFILE '路径/文件名.dbf' SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED; ``` 这里的参数说明了表空间的名称、初始数据文件的位置和大小,以及自动扩展的设置。 其次,**创建...

    Linux 下数据库备份脚本

    - `ORACLE_HOME`:Oracle产品的安装路径,例如`/u01/app/oracle/product/11.2.0.1`。 - `ORACLE_SID`:数据库实例名,例如`orcl`。 - `PATH`:添加Oracle的bin目录到系统路径中,以确保可以顺利调用Oracle相关的...

    AppleScript 简明基础教程

    **11.2 编写和使用基本的script对象** - **定义**:创建包含属性和方法的自定义对象。 - **示例**:`script MyObject`…`end script`. **11.3 载入和调用外部script对象** - **加载**:使用`load script`命令来...

    Visual C++实践与提高-COM和COM+篇『PDF』

    4.4.2.1 文件名字对象(file moniker) 4.4.2.2 复合名字对象(composite moniker) 4.4.2.3 单项名字对象(item moniker) 4.4.2.4 反-名字对象 4.4.2.5 指针名字对象 4.4.2.6 类名字对象 4.4.3 使用名字对象 4.4....

    oracle版本升级

    从11.2.0.1升级到11.2.0.4的主要目的是为了应用最新的补丁,修复已知的安全漏洞,并确保系统能够顺利通过安全扫描。以下是升级过程中涉及的关键步骤和知识点: 1. **服务器及数据库信息检查**: 在开始升级前,需...

    oracle和win7兼容的版本

    CREATE TABLESPACE 表空间名 DATAFILE '路径\文件名.dbf' SIZE 50M AUTOEXTEND ON; ``` 4. 用户和权限管理 Oracle数据库中的用户负责访问数据库资源。创建用户并分配权限的SQL命令如下: ```sql CREATE USER ...

    oracle数据库的备份与恢复

    - 使用`SQL`查询语句,如`SELECT name FROM v$controlfile`,`SELECT status, name FROM v$datafile`和`SELECT * FROM v$logfile`来获取这些文件的路径。 - 关闭数据库,使用操作系统命令(如`cp`)将这些文件复制...

    ORACLE-DataGuard系列:逻辑standby搭建.doc

    1. **确认对象和语句支持:** 确保所有需要复制的对象和SQL语句都支持Standby数据库的操作。 2. **确保唯一性:** 确认Primary数据库中的所有表能够通过主键或其他唯一标识符唯一确定每一行记录。 3. **环境检查:** ...

    goldengate安装手册

    这可以通过修改数据库的`init.ora`文件或使用SQL命令`ALTER DATABASE ADD LOGFILE ...`来实现。具体步骤取决于当前数据库的配置和版本。 ##### 5. 关闭数据库的recyclebin - **适用场景**:当需要复制包含DDL语句...

    ActionScript开发技术大全

    11.2舞台对象Stage 239 11.2.1图像品质与帧频 239 11.2.2缩放与对齐 240 11.2.3焦点控制 242 11.2.4交互控制 242 11.2.5全屏?刂?243 11.3容器对象Sprite 245 11.3.1按钮模式 245 11.3.2热区 246 11.3.3对象拖放 247 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     11.2 调用函数   11.2.1 函数操作符   11.2.2 关键字参数  11.2.3 默认参数   11.2.4 参数组   11.3 创建函数   11.3.1 def语句   11.3.2 声明与定义比较   11.3.3 前向引用   11.3.4 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     11.2 调用函数   11.2.1 函数操作符   11.2.2 关键字参数  11.2.3 默认参数   11.2.4 参数组   11.3 创建函数   11.3.1 def语句   11.3.2 声明与定义比较   11.3.3 前向引用   11.3.4 ...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    1.13.3 File菜单 1.13.4 Edit 菜单 1.13.5 Run 菜单 1.13.6 Compile 菜单 11.13.7 Project 菜单 1.13.8 Options菜单 1.13.9 Debug 菜单 1.13.10 Break/watch 菜单 1.13.11 Turbo C 2.0 的配置文件 2 程序的灵魂—...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    1.13.3 File菜单 1.13.4 Edit 菜单 1.13.5 Run 菜单 1.13.6 Compile 菜单 11.13.7 Project 菜单 1.13.8 Options菜单 1.13.9 Debug 菜单 1.13.10 Break/watch 菜单 1.13.11 Turbo C 2.0 的配置文件 2 程序的灵魂—...

Global site tag (gtag.js) - Google Analytics