MyException - 我的异常网
当前位置:我的异常网» 人工智能 » Flex air批改外部xml文件

Flex air批改外部xml文件

www.MyException.Cn  网友分享于:2013-10-31  浏览:10次
Flex air修改外部xml文件
AIR的文件操作不难,看完教程应该可以满足你对文件的所有基本操作。这篇教程主要以实际操作中遇到的情况来讲解

我们想想文件操作都会有什么内容,无非是创建,修改,删除,移动,拷贝。在这个过程中我们会涉及到一些周边的操作,比如文件夹,文件选择器,文件列表,文件信息获取等。 我就围绕创建,修改,删除,移动,拷贝来展开我们的教程。因为内容比较多,基于迷你教程每篇都短小,易读的原则。我分为两篇,今天先讲第一篇,基本的操作,下一篇我再加入上面所说周边的操作相对深一步的讲解。

Air的文件操做主要涉及两个类,FIle和FileStream。一般来说我们不会直接以文本形式保存文件,那样的内容不易于修改,所以这里我以xml 文件为例。

Note: 下面所有的function可以直接复制到你的代码中运行
1.创建新文件。

public function createFileDemo():void{

var file:File = File.desktopDirectory.resolvePath(“test.xml”) //尝试从系统桌面获取test.xml文件。
var fileStream:FileStream = new FileStream(); // 创建FileStream 对象,用于读写文件
fileStream.open(file,FileMode.WRITE); //以WRITE方式打开file, 如果file中对应的文件不存在,创建新文件

//准备文件的内容
var content:XML =
我们的第一个文件创建完毕

fileStream.writeUTFBytes(content.toXMLString()); //像文件中写入内容。
fileStream.close(); //完成写入,这时我们打开桌面的test.txt可以看到内容。

}

上面五句代码让我在我的桌面创建了名为test.xml的文件,并且写入了content。

这里有三个地方我们要注意

1. File.desktopDirectory — 因为AIR可以在Mac和Windows下运行,所以我们最好不要指定固定的地址,这里File.desktopDirectory的意思就是指向我系统的桌面,因为我是mac,所以实际返回的是 /kevinluo/Desktop. 除此之外我们还可以得到如下面这些地址

File.documentsDirectory; //指向用户文档文件夹
File.applicationDirectory; //应用程序安装目录
File.getRootDirectories(); //文件系统根目录

等等,我就不一一列举了,具体的大家可以看File帮助中描述。

2.File.desktopDirectory.resolvePath(“test.xml”) — 获取桌面下的test.xml。这里我们还可以这样写

var file:File = File.desktopDirectory
file = file.resolvePath(“test.xml”)

不过我建议还是直接写在一排,如果像这样分开写的话,当fileStream.open(file,FileMode.WRITE) 打开文件时,如果文件不存在就会报错而不会像上面那样创建新的文件。

在使用的时候发现即使写成一行代码 , 在 fileStream.open(file,FileMode.WRITE) 打开文件时也可能报错,解决方法是:首先把file转化为string,然后再转化回来

var xml_home_path:File=new File(MapEditorConstant.APPLICATION_XML_HOME.nativePath.toString());

3. fileStream.open(file,FileMode.WRITE) –FileMode.WRITE是打开文件的方法,打开文件的方法一共有如下四种

FileMode.READ // 只读方式打开文件
FileMode.WRITE // 写方式打开文件,文件的原有内容会被清除。文件不存在的话创建新文件
FileMode.APPEND //追加方式打开文件,写入的内容总是会添加到文件的末尾。文件不存在的话创建新文件
FileMode.UPDATE //直接打开文件,可以根据需要在指定位置插入数据。文件不存在的话创建新文件

这里我们以WRITE方式创建了新文件,并写入了“我们的第一个文件创建完毕”。
2. 读取已有的文件,修改内容,再更新文件。

publuc function modifyFileDemo():void{

var file2:File = File.desktopDirectory.resolvePath(“test.xml”); //读取刚才创建的test.xml
var fs:FileStream = new FileStream();
fs.open(file2,FileMode.READ); //以只读方式打开
var ct:XML = new XML(fs.readUTFBytes(fs.bytesAvailable)); //获取xml内容
ct.content = “我们的第一个文件修改完毕” //修改content节点下的内容
fs.open(file2,FileMode.WRITE); //重新以写方式打开文件,目的在于清除原有的内容
fs.writeUTFBytes(ct.toXMLString()) //写入修改过后的XML
fs.close()

}

这里我用了READ和WRITE的组合。在实际的使用中我们可以判断一个xml文件的大小来限制单个文件写入过大。
3.删除文件。

删除文件是最简单的。

public function deleteFIleDemo():void{

var file2:File = File.desktopDirectory.resolvePath(“test.xml”);
if(file2.exists){ //判断文件是否存在
file2.deleteFile() //删除文件
}

}

如果使用file2.moveToTrash()则将文件移到垃圾箱
4.拷贝文件/移动文件

public function copyFileDemo():void{

var sourceFile:File = File.desktopDirectory.resolvePath(“test.xml”) //获取源文件
var newFile:File = File.desktopDirectory.resolvePath(“test2.xml”) //创建目标文件
sourceFile.copyTo(newFile,true) //执行拷贝,如果是移动的话sourceFile.moveTo(newFile,true)

}
5. 异步与同步

AIR对文件的操作分为异步与同步两种方式。上面1–4介绍的是同步方式,其中的一些方法有另一个异步方式,看下面的列表

File.copyTo() — File.copyToAsync()
File.moveTo() — File.moveToAsync()
File.deleteDirectory() — File.deleteDirectoryAsync()
File.deleteFile() — File.deleteFileAsync()
File.getDirectoryListing() – File.getDirectoryListingAsync()
File.moveToTrash() — File.moveToTrashAsync()

FileStream.open — FileStream.openAsync()

使用异步方式时我们需要监听EVENT.COMPLETE和IOErrorEvent.IO_ERROR事件来获取file的操作结果。我拿上面的拷贝做个例子

pirvate funnction copyFile(sourceFIlePath:String, targetFIlePath:String):void{

var sourceFile:File = File.desktopDirectory.resolvePath(sourceFIlePath) //获取源文件
var newFile:File = File.desktopDirectory.resolvePath(targetFIlePath) //创建目标文件
sourceFile.addEventListener(Event.COMPLETE,completeHandle) //监听文件操作complete事件
sourceFile.copyToAsync(newFile,true) ; //开始拷贝,异步方式
this. showLoadingBar() //打开loading图标

}

private function completeHandle():void{

Alert.show(“拷贝文件完成”)
this.closeLoadingBar() //关闭loading图标

}

异步方式的好处是我们可以从中实行一些别的操作,比如出现一个loading的提示之类。

OK, 休息了
1 楼 wecley 2011-03-03  
var file2:File = File.desktopDirectory.resolvePath(“test.xml”); //读取刚才创建的test.xml
var fs:FileStream = new FileStream();
fs.open(file2,FileMode.READ); //以只读方式打
2 楼 pangxin12345 2011-06-07  
行啊! 帅气不愧是帅气呀

文章评论

什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
漫画:程序员的工作
漫画:程序员的工作
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Java程序员必看电影
Java程序员必看电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
鲜为人知的编程真相
鲜为人知的编程真相
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员的鄙视链
程序员的鄙视链
旅行,写作,编程
旅行,写作,编程
老程序员的下场
老程序员的下场
为什么程序员都是夜猫子
为什么程序员都是夜猫子
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
每天工作4小时的程序员
每天工作4小时的程序员
一个程序员的时间管理
一个程序员的时间管理
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员都该阅读的书
程序员都该阅读的书
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
那些争议最大的编程观点
那些争议最大的编程观点
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
10个调试和排错的小建议
10个调试和排错的小建议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
 程序员的样子
程序员的样子
编程语言是女人
编程语言是女人
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有