File对象的路径

 

File对象的路径

每个File对象有两个属性定义路径:

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

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

指向目录的File对象

这里有几种方法设置指向一个目录的File对象。

指向明确的目录

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

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

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

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

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

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

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

var file:File = File.applicationStorageDirectory; 

file = file.resolvePath("prefs.xml"); 

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

var file:File = File.applicationResourceDirectory; 

file = file.resolvePath("images"); 

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

设置nativePath属性可指向明确的目录:

var file:File = new File(); 

file.nativePath = "C://AIR Test//"; 

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

var file:File = File.userDirectory; 

file = file.resolvePath("AIR Test"); 

还可通过url属性获得url格式的路径信息:

var urlStr:String = "file:///C:/AIR Test/"; 

var file:File = new File() 

file.url = urlStr; 

 

让用户浏览选择目录

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

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

var file:File = new File(); 

file.addEventListener(Event.SELECT, dirSelected); 

file.browseForDirectory(); 

function dirSelected(e:Event):void { 

    trace(file.nativePath); 

指向文件的File对象

 有几种方法:

指向明确的文件路径

使用resolvePath()方法获得文件相对路径:

var file:File = File.applicationStorageDirectory; 

file = file.resolvePath("log.txt"); 

使用url格式的路径:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 

var file:File = new File() 

file.url = urlStr; 

URL可作为构造函数参数:

var urlStr:String = "file:///C:/AIR Test/test.txt"; 

var file:File = new File(urlStr); 

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

file.url = "file:///c:/AIR Test"; 

trace(file.url); // file:///c:/AIR%20Test 

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

var file:File = new File(); 

file.nativePath = "C:/AIR Test/test.txt"; 

也可作为构造函数参数:

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

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

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

列举目录文件

使用getDirectoryListing()方法获得文件和子目录数组。

让用户选择文件

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

browseForOpen() 

browseForSave() 

browseForMultiple() 

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

var fileToOpen:File = File.documentsDirectory; 

selectTextFile(fileToOpen); 

 

function selectTextFile(root:File):void 

    var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); 

    root.browseForOpen("Open", [txtFilter]); 

    root.addEventListener(Event.SELECT, fileSelected); 

 

function fileSelected(event:Event):void 

    trace(fileToOpen.nativePath); 

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

 

修改文件路径

可通过resolvePath()方法修改路径或修改nativePath及url属性:

var file1:File = File.documentsDirectory; 

file1 = file1.resolvePath("AIR Test"); 

trace(file1.nativePath); // C:/Documents and Settings/userName/My Documents/AIR Test 

var file2:File = File.documentsDirectory; 

file2 = file2.resolvePath(".."); 

trace(file2.nativePath); // C:/Documents and Settings/userName 

var file3:File = File.documentsDirectory; 

file3.nativePath += "/subdirectory"; 

trace(file3.nativePath); // C:/Documents and Settings/userName/My Documents/subdirectory 

var file4:File = new File(); 

file.url = "file:///c:/AIR Test/test.txt" 

trace(file3.nativePath); // C:/AIR Test/test.txt 

支持URL模式

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

file 指定相对于文件系统的路径:

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

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

app-resource:/images 

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

两个文件的相对路径

使用getRelativePath()方法找出两个文件的相对路径:

var file1:File = File.documentsDirectory.resolvePath("AIR Test"); 

var file2:File = File.documentsDirectory 

file2 = file2.resolvePath("AIR Test/bob/test.txt"); 

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

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

var file1:File = File.documentsDirectory; 

file1 = file1.resolvePath("AIR Test"); 

var file2:File = File.documentsDirectory; 

file2 = file2.resolvePath("AIR Test/bob/test.txt"); 

var file3:File = File.documentsDirectory; 

file3 = file3.resolvePath("AIR Test/susan/test.txt"); 

 

trace(file2.getRelativePath(file1, true)); // ../.. 

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

 

获取正确的文件名

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

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

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

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

var file:File = File.documentsDirectory.resolvePath("AIR test"); 

trace(file.nativePath); // ... AIR test 

file.canonicalize(); 

trace(file.nativePath); // ... AIR Test 

Canonicalize方法转换nativePath对象为正确的大小写字母。

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

var path:File = new File(); 

path.nativePath = "C://AIR~1"; 

path.canonicalize(); 

trace(path.nativePath); // C:/AIR Test 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值