Flex AIR 文件对象操作

功能1、指向目录和文件

File对象有两个属性都能定义文件路径,它们是nativePath和url。nativePath是在特定平台使用的文件路径(主要就是Windows和MacOs上的路径表示不同),url则是统一的”file:///c:/Sample/test.txt”这样的表示方法。

 

我们来看几个指向目录的实例,其中1-7演示了如何获取特殊目录: 

var file:File = File.userDirectory; //指向用户文件夹 var file:File = File.documentsDirectory; //指向用户文档文件夹 var file:File = File.desktopDirectory; //指向桌面var file:File = File.applicationStorageDirectory; //指向应用程序存储目录(参见AIR的URL方案) var dir:File = File.applicationDirectory; //应用程序安装目录 var dir:File = File.getRootDirectories(); //文件系统根目录 

 

还有一招,指向请求启动该应用程序的目录,先空着,以后补上。参考资料见《Capturingcommand line arguments》 

var file:File = new File(); file.nativePath = "C:\\Mousebomb\\"; //(windows平台)指向一个具体的目录,这里使用了nativePath属性,”C:\\Mousebomb\\”只适用windows中。 var file:File = File.userDirectory; file = file.resolvePath(”Mousebomb”); //跳转到用户目录下的Mousebomb目录 var urlStr:String = "file:///C:/Mousebomb/"; var file:File = new File() file.url = urlStr; //指向c盘下的Mousebomb目录,这里使用了url属性 /*让用户选择目录*/var file:File = new File(); file.addEventListener(Event.SELECT, dirSelected); file.browseForDirectory("Select a directory");function dirSelected(e:Event):void { trace(file.nativePath); } 

 

下面看看指向文件的实例: 

 

指向明确的文件地址: 

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

 

使用url属性的例子: 

var urlStr:String = "file:///C:/Mousebomb/Flashj.txt"; var file:File = new File() file.url = urlStr; 

 

当然你也可以直接这样写

var urlStr:String = "file:///C: /Mousebomb/Flashj.txt"; var file:File = new File(urlStr); //url中的空格会被%20替换 

 

使用nativePath属性: 

var file:File = new File(); file.nativePath = "C:/ Mousebomb/Flashj.txt"; 

 

或者 

var file:File = new File("C:/ Mousebomb/Flashj.txt"); //(Windows下) 

 

通过对话框让用户选择文件 

实现这个功能需要认识三个方法: 

browseForOpen() 

browseForSave() 

browseForOpenMultiple() 

三个方法都是异步的,browseForOpen() 和 browseForSave()方法在用户选择文件时会触发select事件,在选择了某文件时,File指向选择的文件。

而browseForOpenMultiple()方法会触发selectMultiple事件,该事件属于FileListEvent型,它的属性中具有指向所选文件的File对象数组。

例子: 

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); } 

 

 

功能2、拷贝文件和目录 

拷贝文件使用到的方法有copyTo()和copyToAsync(),详见AIR文件基础,前者为同步方法,后者为异步方法。

要拷贝文件,需要创建2个File对象,一个指向原文件,一个指向目标文件。像下面两例: 

 

1.同步拷贝例: 

var original:File = File.documentsDirectory.resolvePath("Mousebomb/FlashJ.txt"); var newFile:File = File.resolvePath("Mousebomb/FlashJcn.txt"); original.copyTo(newFile, true); 

 

第二个参数true表示覆盖存在的文件,默认值是false,若设置为false,而拷贝的目标文件已经存在,则AIR会发出IOErrorEvent事件。 

 

2.异步拷贝例: 

var original = File.documentsDirectory; original = original.resolvePath("Mousebomb/FlashJ.txt"); var destination:File = File.documentsDirectory; destination = destination.resolvePath("FlashJ/FlashJcn.txt"); original.addEventListener(Event.COMPLETE, fileCopyCompleteHandler); original.addEventListener(IOErrorEvent.IO_ERROR, fileCopyIOErrorEventHandler); original.CopyToAsync(destination); function fileCopyCompleteHandler(event:Event):void { trace(event.target); // [object File] 

} function fileCopyIOErrorEventHandler(event:IOErrorEvent):void { trace("I/O Error."); } 

 

 

功能3、移动文件和目录 

移动文件使用的方法有moveTo()和MoveToAsync(),不仅长相类似,连使用方法都与拷贝文件一样,可以直接参考上文。

 

功能4、删除文件和目录(或移至回收站) 

deleteFile()和deleteFileAsync()负责删除功能,而moveToTrash()和moveToTrashAsync()功能是移至回收站。先创建一个File对象指向某个文件或目录,然后执行四个方法之一,处理异步方法要加事件监听。

var file:File = File.documentsDirectory.resolvePath("DeleteMe.txt"); file.moveToTrash(); 

 

功能5、列出某目录中的文件和目录 

可以使用getDirectoryListing()方法和getDirectoryListingAsync()方法获取某个目录下文件与子目录的File指针数组。

例如: 

var directory:File = File.documentsDirectory; var contents:Array = directory.getDirectoryListing(); for (var i:uint = 0; i < contents.length; i++) { trace(contents[i].name, contents[i].size); } 

 

本例输出了用户文档目录中的文件名和大小。 

若使用异步方法,例如: 

var directory:File = File.documentsDirectory; directory.getDirectoryListingAsync(); directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler); function dirListHandler(event:FileListEvent):void {   var contents:Array = event.files; for (var i:uint = 0; i < contents.length; i++) { trace(contents[i].name, contents[i].size); } } 

 

其中directoryListing事件对象中有个files属性,为目录下内容的File指针数组。

 

功能6、创建临时文件和文件夹 

使用createTempFile()和createTempDirectory()方法可以创建临时文件和文件夹。 

var temp:File = File.createTempFile(); //在系统临时文件夹下创建临时文件 //createTempFile()方法会自动创建一个唯一的临时文件。 //createTempDirectory ()方法会自动创建一个唯一的临时文件夹。 

 

你可以用临时文件来临时存储应用程序回话中的信息。 

由于临时文件不会自动删除,所以你可能得让应用程序在关闭前删除它。 

 

功能7、创建目录 

使用createDirectory()方法可以创建目录,例如: 

var dir:File = File.userDirectory.resolvePath("Mousebomb"); dir.createDirectory(); 

 

这个例子在用户文件夹下创建了Mousebomb目录,如果Mousebomb目录存在,则不会作出操作。 

 

功能8、读取文件信息 

File类中包含以下属性,提供File对象所指向文件或目录的信息。

 

属性 描述

creationDate 创建日期 

exists 是否存在 

extension 扩展名,若无则为null 

icon 该文件的图标对象

isDirectory 是否目录 

modificationDate 修改日期

name 文件名(包括扩展名) 

nativePath 特定平台使用的文件路径 

parent 父级目录,若该File对象就是顶级则此属性为null 

size 字节大小 

url 统一资源定位符

详细参见AIR ActionScript. 3.0 Language Reference for Adobe AIR.

 

功能9、获取文件系统信息 

File类包含一下静态属性,提供有用的文件系统信息(主要是跨平台使用): 

 

属性 描述 

File.lineEnding 系统的行结束符 

File.separator 系统的分隔符(Windows下为\ Mac Os为/) 

File.systemCharset 系统的默认文件编码,属于系统所使用的字符集 

 

顺便插进Capabilities类包含的静态属性: 

 

属性 描述 

Capabilities.hasIME 当前运行的系统是否安装了输入法编辑器

Capabilities.language 当前运行的系统的语言编码 

Capabilities.os 当前运行的操作系统

转载于:https://www.cnblogs.com/helloquan/p/5686371.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab程序聚类预测机器学习

matlabmatlab程序代做&#xff0c;数据挖掘&#xff0c;聚类&#xff0c;预测&#xff0c;分类&#xff0c;优化&#xff0c;建模。降重&#xff0c;降低重复率&#xff0c;24h出结果&#xff0c;最低1%重复。 机器学习&#xff0c;深度学习&#xff0c;神经网络代写&#xff0…

友益文书类似软件_团队成员分享 | 港中文翻译学姐:硬件不够,软件来凑;心之所愿,无所不能...

B学姐硬件不行的同学一定要努力提高自己对申请专业上的实习经验。饱腹诗书不够&#xff0c;也要有亲身实践后的体悟&#xff0c;这很加分。多对该行业背景现状进行思考&#xff0c;老师都喜欢有思想的学生&#xff0c;在后期面试也会给你带来惊喜。在读专业&#xff1a;港中文M…

iOS开发技巧,细节(二)

1.常量名称最好用static标识&#xff0c;例如下面的代码&#xff0c;包括其他一些只需要定义一次&#xff0c;之后不需要变化的变量也最好使用static static NSString *CellIdentifier "Cell"; 2.当设置视图控制器需要接受通知时&#xff0c;需要在dealloc取消监听 …

matlab支持向量机程序代做

matlab&#xff0c;支持向量机 回归&#xff0c;分类&#xff0c;都可以。另外决策树&#xff0c;神经网络都可以私人订制 **线性svm&#xff0c;二次svm&#xff0c;cubic svm

c++ qt5范例开发大全_使用yocto工具编译qt5.9.6总结

运行平台&#xff1a;OKMX6DL-C编译平台&#xff1a;Ubuntu 14.04.6 LTS编译工具&#xff1a;arm-poky-linux-gnueabi-gcc&#xff08;gcc version 5.3.0 (GCC) &#xff09;qt源码&#xff1a;qt-everywhere-opensource-src-5.9.6.tar.xz参考&#xff1a;嵌入式开发之Qt-5.9.6…

Android堆栈分析

在开发中&#xff0c;与界面跳转联系比较紧密的概念是Task&#xff08;任务&#xff09;和Back Stack&#xff08;回退栈&#xff09;。activity的启动模式会影响Task和Back Stack的状态&#xff0c; 进而影响用户体验。除了启动模式之外&#xff0c;Intent类中定义的一些标志&…

如何写一篇MBA论文-涉及matlab建模

如何写一篇MBA论文&#xff1f; 知乎 19 个回答方向&#xff0c;具体一点&#xff0c;不要太大。战略管理、薪酬管理、绩效考核、营销管理&#xff0c;客户关系管理、供应链管理、供应商选择与评价&#xff0c;库存问题。。论文模式第1章&#xff1a;绪论第2章&#xff1a;现状…

什么电脑的牌子好用_扬州诚招电动牙刷代理有什么牌子比较好用

扬州诚招电动牙刷代理有什么牌子比较好用&#xff0c;珈蓝电器实惠物美&#xff0c;为人类口腔事业的发展再创新贡献。扬州诚招电动牙刷代理有什么牌子比较好用&#xff0c; 很多人说电动牙刷是懒人神器&#xff0c; 但偷懒可以&#xff0c;口腔清洁效果可不能因此打折。电动牙…

map集合遍历的五种方法

package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set; //循环遍历map的方法public class CircleMap { public static void main(String[] args) { M…

360浏览器打不开网页_苹果移动端、PC端safari浏览器打不开网页的解决方案!

你还在为苹果自带的safari浏览器打不开网页而苦恼吗&#xff0c;接下来的答案会帮助你解决苦恼。苹果自带safari浏览器的设备分为两种&#xff1a;移动端、PC端。因此不同设备出现safari浏览器打不开网页的情况需要具体问题具体分析。最简单的问题往往最容易被我们忽视&#xf…

什么是高内聚、低耦合?

起因&#xff1a;模块独立性指每个模块只完成系统要求的独立子功能&#xff0c;并且与其他模块的联系最少且接口简单&#xff0c;两个定性的度量标准――耦合性和内聚性。 耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密&#x…

台式电脑如何截屏_买台式电脑如何避免成为被宰羔羊(一)

台式电脑的优点是很多的&#xff0c;比如价格便宜(和游戏本比起来)&#xff0c;比如性能发挥稳定(因为不受限于散热)&#xff0c;比如屏幕大看起来更舒服。但是和笔记本比起来&#xff0c;台式的水就非常深了&#xff0c;无论是线下实体店&#xff0c;还是线上网店&#xff0c;…

ImageView及其子类

ImageView及其子类 热度 1已有 14 次阅读2016-7-21 21:25 |个人分类:Android知识|系统分类:移动开发 1、ImageView控件(用于在界面上展示图片的一个空间&#xff0c;通过它可以让我们的程序界面更加丰富多彩。) <1>android:src 给ImageView指定了一张图片 <2>set…

n型半导体和p型半导体的区别_VNX系列大流量工业型膜堆, 为半导体等行业提供超纯水!...

自20世纪80年代以来&#xff0c;IONPURE始终以为广泛的应用提供最优质的电化学解决方案延续着它的领导地位。IONPURE持续创新&#xff0c;于2004年推出了VNX 系列大流量CEDI膜堆&#xff0c;单个膜堆的名义产水流量最大可达12.5m3/h。IONPURE于2018年推出了单个膜堆的名义产水流…

【贪心】赶作业

【贪心】赶作业 问题 : 【贪心】赶作业 时间限制: 1 Sec 内存限制: 64 MB 题目描述 小墨老师总是不及时做作业&#xff0c;所以他总有很多的作业要做。每个老师都给了他一个完成作业的最后期限&#xff0c;如果他超过期限交作业&#xff0c;老师就会在他的期末评价中扣分。假设…

属于db模式缺点的是什么_详解 Seata Golang 客户端 AT 模式及其使用

源码:point_down: seata-golang概述我们知道 Seata Java Client 的 AT 模式&#xff0c;通过代理数据源&#xff0c;实现了对业务代码无侵入的分布式事务协调机制&#xff0c;将与 Transaction Coordinator (TC) 交互的逻辑、Commit 的逻辑、Rollback 的逻辑&#xff0c;隐藏在…

iOS 直接使用16进制颜色

在做iOS开发时&#xff0c;一般我们会吸色&#xff0c;就是产品给的图我们一般会吸色&#xff0c;但是最近吸色时候&#xff0c;老大说有较大的颜色偏差&#xff0c;所以要求我们直接使用UI给出的额16进制颜色&#xff0c;你也可以搜索《RGB颜色值转换成十六进制颜色码&#xf…

如何在mfc主对话框中再显示子对话框_win10扩展显示器设置方法

使用win10系统的过程中&#xff0c;常常需要对win10系统扩展显示器进行设置。良多对电脑不太认识的用户不知道win10系统扩展显示器到底该如何设置?实在win10系统扩展显示器的设置方法非常简朴&#xff0c;下面小编教你win10扩展显示器设置方法。一些用户使用电脑时需要运行多个…

每天CookBook之JavaScript-059

向页面添加元素<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>059</title><style type"text/css">.overlay{background-color: #000;opacity: .7;filter: alpha(opacity70);po…