`

本地文件(XML文件)的操作(1)

    博客分类:
  • flex
阅读更多

买了战争机器2,写完教程准备杀到睡觉,现在先做第一步,写教程。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) 打开文件时,如果文件不存在就会报错而不会像上面那样创建新的文件。

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, 休息了

分享到:
评论

相关推荐

    maven的本地仓库配置文件settings.xml和项目中文件pom.xml.zip

    一、Idea关联的maven本地仓库配置文件settings.xml (1)必须使用默认文件名 D:\developsoft\javaweb\commonPlugins\maven\apache-maven-3.8.1_first\conf\settings.xml 二、Myeclipse关联的maven本地仓库配置文件...

    java读取本地xml文件信息

    在Java编程中,读取本地XML文件是常见的数据操作任务,尤其在处理配置信息、存储结构化数据或进行数据交换时。这篇博文链接虽然没有提供具体的内容,但我们可以通过一般的方法来详细讲解如何在Java中读取XML文件信息...

    XML文件导出为本地excel文件

    本篇文章将详细讲解如何将XML文件导出为本地的Excel文件,这一过程涉及到数据解析、格式转换以及文件操作等多个关键知识点。 首先,我们需要了解XML的基本结构。XML文件由元素(Elements)、属性(Attributes)、...

    系统文件管理和对XML文件操作管理

    在"WindowsFormsApplication1"项目中,你将看到如何整合这些概念来创建一个实用的本地文件管理工具,同时也包含了对XML文件的读写和编辑功能。通过深入研究和实践,你可以熟练掌握这些技术,为你的IT职业生涯增添...

    本地生成新的XML文件

    3. **写入文件**:一旦XML结构构建完成,我们可以将其序列化为字符串,然后写入到本地文件系统。例如,在Python中: ```python import xml.etree.ElementTree as ET # 创建XML结构 root = ET.Element("root") ...

    解析xml和本地解析xml

    例如,当XML文件较大或者解析过程涉及复杂的业务逻辑时,服务器端解析可以避免客户端性能瓶颈。同时,服务器端还可以提供数据验证、转换等功能。 3. 本地解析XML: 本地解析XML是在用户的设备上,如PC或移动设备上...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    XML文件写入保存本地

    在IT行业中,XML文件的读取与写入是常见的操作,特别是在数据交换、配置文件存储以及序列化等领域。本文将详细介绍如何将XML文件写入本地,并进行解析,同时讨论自定义保存路径的相关策略。 1. **XML文件结构** - ...

    sax解析xml本地读取xml

    标题“sax解析xml本地读取xml”指的是使用SAX解析器来读取和解析存储在本地文件系统中的XML文件。这种方式适用于处理那些无法一次性加载到内存中的大型XML文档,或者对于内存有限的环境。 SAX解析的基本工作原理...

    IOS解析XML文件

    而GDataXMLNode库(基于libxml2)提供了一个更面向对象的方法,对于小型XML文件,它的使用更为方便,且易于理解和操作。 **NSXMLParser使用方法:** 1. 创建NSXMLParser实例,传入XML数据的NSData对象。 2. 实现...

    在web.xml中引入其他xml配置文件的步骤

    为了提高代码的可维护性和复用性,有时需要将一部分配置内容提取到独立的XML文件中,再在`web.xml`中引用这些文件。本文将详细介绍如何在`web.xml`中引入其他XML配置文件,并解决可能出现的问题。 #### 步骤一:...

    cocos2d-x 读取本地的xml文件

    在Cocos2d-x这个强大的2D游戏开发框架中,读取本地XML文件是一项重要的功能,尤其当需要处理数据结构复杂或实现图文混排时。XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构化数据。在Cocos...

    读取XML本地化文件并解析

    1. **XML本地化文件的作用** XML本地化文件通常用于存储不同语言版本的应用程序中的文本资源,如菜单项、按钮标签、错误消息等。通过这种方式,开发者可以轻松地为不同的地区和语言提供定制的用户体验,而无需更改...

    c#读取xml文件增加结点删除节点并在listview中显示xml文件内容

    本文将详细介绍如何使用C#来读取XML文件、添加和删除节点,并将XML文件内容显示在ListView控件中。 首先,我们需要引入System.Xml命名空间,它包含了处理XML文档所需的所有类和方法。在C#代码中,可以使用以下语句...

    android下解析xml文件的demo

    在Android开发中,XML文件常用于存储数据、配置文件或者作为接口返回的数据格式。本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible ...

    Qt读写Xml文件(QTreeWidget加载显示Xml文件内容;QTreeWidget项导出保存为Xml)

    在本文中,我们将深入探讨如何使用Qt框架进行XML文件的读写操作,特别是在与QTreeWidget结合使用时的实现方式。QTreeWidget是Qt提供的一种用于显示和操作树型结构数据的控件,而XML是一种广泛应用的数据存储和交换...

    XML技术上传文件

    它允许脚本在客户端读取和操作二进制文件内容,尽管脚本语言本身无法直接访问本地文件系统。ADO Stream是Microsoft Data Access Components (MDAC)的一部分,能够处理二进制流数据,弥补了脚本语言的不足。 总结来...

    main_menu.xml菜单汉化文件

    2. **翻译文本**:对XML文件中的英文文本进行翻译,确保每个菜单项和子菜单项都准确地被翻译成中文。 3. **保持结构不变**:在翻译过程中,必须保留XML文件的结构,不能改变元素的位置或删除任何必需的属性。每个...

    根据XML模版自动生成

    4. **文件输出**:生成的XML文件会按照指定的路径和命名规则保存到本地文件系统。在此过程中,可能需要考虑文件的编码(如UTF-8)、文件权限以及错误处理等问题。 5. **验证和测试**:生成XML文件后,为了确保其...

    自动定时上传文件xml

    3. **文件操作**:理解如何在本地文件系统中读取、写入和管理XML文件是必要的。这包括使用文件I/O函数打开、读取和关闭文件,以及处理可能出现的错误情况。 4. **网络通信**:如果XML文件需要上传到远程服务器,...

Global site tag (gtag.js) - Google Analytics