开发环境:FlexBuilder4.6


test.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
private var file:FileReference = new FileReference();
private var parentPath:String = null;
private var fileName:String=null;

/**
* 读取要修改的文件
**/
protected function readFile(event:MouseEvent):void
{

var filter:FileFilter=new FileFilter("提示文件类型*.*", "*.*");
file.addEventListener(Event.SELECT,selectedFile);
file.browse([filter]);


}
/**
* 选择文件
* */
protected function selectedFile(e:Event):void{
if(e.target.size > 524288){
Alert.show("要读取的文件大于512KB,请重新选择文件");
return;
}
fileName = e.target.name;
file.load();
file.addEventListener(Event.COMPLETE,getData);

}
/**
* 获取文件
* */
protected function getData(e:Event):void{
var dataArr:ByteArray = file.data;
var dataStr:String;
dataArr.position = 0;
dataStr = dataArr.readUTFBytes(dataArr.length);
content.text = dataStr;
}
/**
*
* 修改完成后,将文本框中的内容保存到指定路径
* */
protected function saveContentHandler(event:MouseEvent):void
{
if(content.text==null || content.text==""){
Alert.show("请先选择文件修改,然后保存");
return;
}
var sfile:FileReference = new FileReference();
sfile.save(content.text, fileName);
sfile.addEventListener(Event.COMPLETE,fileSaved);

}
/**
* 文件保存成功
* */
protected function fileSaved(event:Event):void{
Alert.show("文件保存成功!");
}


]]>
</fx:Script>

<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->


</fx:Declarations>

<s:VGroup width="80%" x="10" y="10">
<s:Label text="选择文件" />
<s:Button label="选取文件" id="secFileBtn" click="readFile(event)" />
<s:Label id="secFilePath" fontSize="16" fontWeight="bold" color="0x0050AA"/>
<s:TextArea id="content" width="600" height="400"/>
<s:Button label="保存" id="saveContent" click="saveContentHandler(event)"/>

</s:VGroup>



</s:Application>


采用此方法:第一:不需要获取文件的绝对路径,就可直接读取文件。


     第二:秒杀网上所谓的通过JS回调方式获取(经测试,网上那种方式存在问题,每次获取的路径都是都是C:/fakepath/文件名).


    第三:目前只支持文本格式存储的数据,当数据量过大(超过几M)时,读取到文本框中的数据很卡。


适用范围: 对配置文件的修改,或者动态配置文件的访问修改(文本格式,数据量较小)