Adobe AIR对本地文件(XML文件)的操作
引用:http://addiwang.blog.163.com/blog/static/118130772011221114230288/
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 = <root>
<content> 我们的第一个文件创建完毕</content>
</root>
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) 打开文件时,如果文件不存在就会报错而不会像上面那样创建新的文件。
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的提示之类。
Adobe AIR对本地文件(XML文件)的操作的更多相关文章
- Nmap结果文件XML文件解析
对nmap扫描结果xml格式的文件进行解析,无需直接xml解析或读取,可直接使用模块: 1.nmapparser 安装:pip install nmapparser Demo: #!/usr/bin/ ...
- 30天C#基础巩固----查找XML文件元素
一:XML文档 了解xml文档. 利用代码来创建XML文档. //引用命名空间+using System.Xml; XmlDocument xdoc=new XmlDocument(); XmlDec ...
- 三十二、python操作XML文件
'''XML:模块 xml总结 1.解析 str 文件 tree,ElementTree,type root,Element,type2.操作 Element: tag,text,find,iter, ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析
首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- xml文件读取到数据库
xml文件读取到数据库 第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步 xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...
- python读写xml文件
python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...
- python 常用包之xml文件处理
1,处理xml的包 from xml.etree import ElementTree as ET 2,如何写出xml文件 xml文件和html中的元素很像,有父级子集之说, root = ET.El ...
随机推荐
- Linux下搭建个人网站
前不久在阿里买了一个服务器,然后开始第一次尝试搭建自己的个人网站.前端采用了bootstrap框架,后端采用的是PHP,数据库使用的是Mysql.新手第一次在linux下搭建遇见很多问题,在这里分享一 ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- 如何在Android中实现全屏,去掉标题栏效果
在进行Android UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件A ...
- <把时间当做朋友>读书笔记
这本书我早就看过,还想再来一遍 开始这一行动是看李萌在朋友圈晒101计划,每天健身,读书半小时之类的,我也想做点啥,那就每天睡前读书半小时吧,怎么坚持下去呢? 我不想晒到朋友圈里,那就晒给玉玉看吧, ...
- ArcGIS Server,rest路径输入要素json 格式描述
以下内容只测试了简单线, 在ArcGIS Server 的rest路径下可以对服务进行操作,如Query等,这些操作可以输入json 格式要素描述或运行得到即输出json格式要素描述. 如博客:htt ...
- SQL UNION 和 UNION ALL 操作符\SQL SELECT INTO 语句\SQL CREATE DATABASE 语句
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- 两个NOI题目的启迪8皇后和算24
论出于什么原因和目的,学习C++已经有一个星期左右,从开始就在做NOI的题目,到现在也没有正式的看<Primer C++>,不过还是受益良多,毕竟C++是一种”低级的高级语言“,而且NOI ...
- java中字节流与字符流的区别
字节流 在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字 ...
- C和C++混合编程中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...
- 安装springboot时遇到 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath.问题
将工程外部jar包删除slf4j就可以运行.