File类,FileMode,FileStream,air支持文件同步和异步,在使用异步操作的时候,必须要使用
addEventListener()方法,添加事件监听。以下的介绍是从书上扒下来的,我觉得描述的挺好:
File对象是指向文件系统中文件或目录的路径。使用File对象创建指向文件或者文件夹的指针,
启动与文件或文件夹的交互。
FileStream对象,用于打开文件进行读写。在创建了File对象,指向新文件或者现有文件的指针后,
可以将该指针传递给FileStream对象,然后对文件进行数据流操作。
FileMode类定义了FileStream类的open()和openAsync()方法的fileMode参数中使用的字符串常量。
这些方法的fileMode参数确定了打开文件后的FileStream对象可以进行的操作,包括写入,读取,追加
和更新。
以下只是简单的文件操作。先熟悉一下流程。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" backgroundColor="#323232">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private function openFile():void{
//documentsDirectory 是要打开的默认指文档的路径
var file:File = File.desktopDirectory;
//可以追加文件过滤的属性
var textFilter:FileFilter = new FileFilter("text","*.as;*.html;*.css;*.txt;*.xml");
file.browseForOpen("选择要打开的文件",[textFilter]);
file.addEventListener(Event.SELECT,openDirectorySelect);
}
private function openDirectorySelect(evt:Event):void{
var fs:FileStream = new FileStream();
txtPath.text = File(evt.target).nativePath;
fs.open(File(evt.target),FileMode.READ);
txtArea.text = fs.readMultiByte(fs.bytesAvailable,"gb2312");
fs.close();
}
private function writeFile():void{
var fs:FileStream = new FileStream();
fs.open(new File(txtPath.text),FileMode.WRITE);
fs.writeMultiByte(txtArea.text,"gb2312");
}
private function saveFile():void{
var file:File = File.desktopDirectory;
file.browseForSave("请保存文件");
file.addEventListener(Event.SELECT,saveEvent);
}
private function saveEvent(evt:Event):void{
var fs:FileStream = new FileStream();
var url:String = File(evt.target).nativePath+txtName.text;
var file:File = new File(url);
fs.open(file,FileMode.WRITE);
fs.writeMultiByte(txtArea.text,"gb2312");
}
]]>
</fx:Script>
<mx:TextInput id="txtPath" x="10" y="10" width="321"/>
<mx:Button id="btnOpen" x="339" y="10" label="Open" click="openFile()"/>
<mx:Button id="btnWrite" x="420" y="10" label="write" click="writeFile()"/>
<mx:TextArea id="txtArea" x="10" y="40" width="394" height="276"/>
<mx:TextInput id="txtName" x="10" y="324" width="321"/>
<mx:Button x="339" y="324" label="Save" click="saveFile()"/>
</s:WindowedApplication>
这里是打开和写入,保存文件的码。
有一点思路转不过来,就是在save的时候,应该用什么方法好,我这里的方法总感觉怪怪的,
要在txtName那里输入后缀才行,先用的fs去open,然后在用fs的write写入文件再去保存,
感觉逻辑怪怪的。