引用: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文件)的操作的更多相关文章

  1. Nmap结果文件XML文件解析

    对nmap扫描结果xml格式的文件进行解析,无需直接xml解析或读取,可直接使用模块: 1.nmapparser 安装:pip install nmapparser Demo: #!/usr/bin/ ...

  2. 30天C#基础巩固----查找XML文件元素

    一:XML文档 了解xml文档. 利用代码来创建XML文档. //引用命名空间+using System.Xml; XmlDocument xdoc=new XmlDocument(); XmlDec ...

  3. 三十二、python操作XML文件

    '''XML:模块 xml总结 1.解析 str 文件 tree,ElementTree,type root,Element,type2.操作 Element: tag,text,find,iter, ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  6. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  7. xml文件读取到数据库

    xml文件读取到数据库   第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步  xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...

  8. python读写xml文件

    python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...

  9. python 常用包之xml文件处理

    1,处理xml的包 from xml.etree import ElementTree as ET 2,如何写出xml文件 xml文件和html中的元素很像,有父级子集之说, root = ET.El ...

随机推荐

  1. 【BZOJ】3495: PA2010 Riddle

    题意 \(n(1 \le n \le 1000000)\)个城市,\(k(1 \le k \le n)\)个国家,\(m(1 \le m \le 1000000)\)条边.要求每个国家有且仅有一个首都 ...

  2. c#实现简单金山打字小游戏(源码)

    using GameDemo.Utils;using System;using System.Collections.Generic;using System.Linq;using System.Te ...

  3. Android:Activity生命周期

    Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack). 栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新 ...

  4. xampp安装

    软件下载在以下网站 http://www.apachefriends.org/zh_cn/index.html XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发 ...

  5. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  6. apache 自带的ab测试

    ab -c 20 -n 2000 http://192.168.1.110:8080/index.php

  7. git常使用命令整理

    1.git撤销本地所有修改(tracked和untracked) . git clean -df . git reset --hard 第一个命令只删除所有untracked的文件,如果文件已经被tr ...

  8. maxscale

    一.maxscale简介1.MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换.2.官网:https://mariadb ...

  9. 2.4.1 用NPOI操作EXCEL--画线(转)

    之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的方式完成.这节开始,我们开始学习NPOI的画图功能.先从最简单的开始,画一条直线:对应的代码为: HSSFSheet sheet1 = ...

  10. Android APP压力测试-Monkey

    压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随 ...