结果输出:
=>File saved;
=>Saved 21 of (21) bytes;
=>File was successfully loaded;
=>Loaded 21 of (21)bytes;
=>Loaded 0 of (21)bytes;
=>FileReferenceSaveExample.as
package aspackage
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import mx.core.UIComponent;
/**
* 将数据保存到本地文件类
* @author cen
*
*/
public class FileReferenceSaveExample extends UIComponent
{
/**
* 属性*/
/*文件对象*/
private var fileRef:FileReference;
/**
* constructor
*/
public function FileReferenceSaveExample()
{
/**
* 初始化文件对象*/
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, onFileSelectedHandler);
fileRef.addEventListener(Event.CANCEL, onFileCancelHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler);
/*所允许文件类型*/
var fileType:FileFilter = new FileFilter("TextFiles(*.txt, *.rtf)", "*.txt;*.rtf");
/*打开对话框选择文件*/
fileRef.browse([fileType]);
}
/**
* 安全错误
* @param event
*
*/
private function onSecurityErrorHandler(event:SecurityErrorEvent):void
{
trace("There was a Security error;");
}
/**
* 输入/输出错误
* @param event
*
*/
private function onIOErrorHandler(event:IOErrorEvent):void
{
trace("There was an IO Error;");
}
/**
* 文件选择
* @param event
*
*/
private function onFileSelectedHandler(event:Event):void
{
fileRef.addEventListener(ProgressEvent.PROGRESS, onFileProgressHandler);
fileRef.addEventListener(Event.COMPLETE, onFileCompleteHandler);
/*加载数据进内存*/
fileRef.load();
}
/**
* 文件加载进度
* @param event
*
*/
private function onFileProgressHandler(event:ProgressEvent):void
{
trace("=>Loaded "+event.bytesLoaded+" of ("+event.bytesTotal + ")bytes;");
}
/**
* 取消文件加载数据
* @param event
*
*/
private function onFileCancelHandler(event:Event):void
{
trace("=>The Browse request was canceled by the user;");
}
/**
* 文件完成加载
* @param event
*
*/
private function onFileCompleteHandler(event:Event):void
{
trace("=>File was successfully loaded;");
/**
* 移除监听*/
fileRef.removeEventListener(Event.SELECT, onFileSelectedHandler);
fileRef.removeEventListener(ProgressEvent.PROGRESS, onFileProgressHandler);
fileRef.removeEventListener(Event.COMPLETE, onFileCompleteHandler);
fileRef.removeEventListener(Event.CANCEL, onFileCancelHandler);
}
/**
* 保存数据进文件
* 特别说明:保存数据时,在这里,得需要手动调用此函数;
*/
public function saveFileFn():void
{
/**
* 选择文件保存位置以及设置文件名称*/
fileRef.addEventListener(Event.SELECT, onSaveFileSelectedHandler);
fileRef.save(fileRef.data, "writeTo.txt");
}
/**
* 选择文件要保存的位置
* @param event
*
*/
private function onSaveFileSelectedHandler(event:Event):void
{
fileRef.addEventListener(ProgressEvent.PROGRESS, onSaveProgressHandler);
fileRef.addEventListener(Event.COMPLETE, onSaveCompleteHandler);
fileRef.addEventListener(Event.CANCEL, onSaveCancelHandler);
}
/**
* 文件保存进度
* @param event
*
*/
private function onSaveProgressHandler(event:ProgressEvent):void
{
trace("=>Saved " + event.bytesLoaded + " of (" + event.bytesTotal + ") bytes;");
}
/**
* 保存数据文件取消
* @param event
*
*/
private function onSaveCancelHandler(event:Event):void
{
trace("=>The save request was canceled by the user;");
}
/**
* 保存数据完成
* @param event
*
*/
private function onSaveCompleteHandler(event:Event):void
{
trace("=>File saved;");
/**
* 移除监听*/
fileRef.removeEventListener(Event.SELECT, onSaveFileSelectedHandler);
fileRef.removeEventListener(ProgressEvent.PROGRESS, onSaveProgressHandler);
fileRef.removeEventListener(Event.COMPLETE, onSaveCompleteHandler);
fileRef.removeEventListener(Event.CANCEL, onSaveCancelHandler);
}
}
}
=>App.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" pageTitle="TheStudioOfCenyebao">
<fx:Script>
<![CDATA[
import aspackage.FileReferenceSaveExample;
/*文件保存*/
private var saveFile:FileReferenceSaveExample;
/**
* 加载数据*/
protected function LoadBtn_clickHandler(event:MouseEvent):void
{
saveFile = new FileReferenceSaveExample();
addElement(saveFile);
saveBtn.enabled = true;
}
/**
* 保存数据*/
protected function saveBtn_clickHandler(event:MouseEvent):void
{
saveFile.saveFileFn();
saveBtn.enabled = false;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 非可视元素 -->
</fx:Declarations>
<s:VGroup horizontalCenter="0" verticalCenter="0" horizontalAlign="center" verticalAlign="middle"
width="230" height="100">
<s:Label text="TheStudioOfCenyebao"/>
<s:Button id="LoadBtn" label="加载文件" click="LoadBtn_clickHandler(event)"/>
<s:Button id="saveBtn" label="保存数据" click="saveBtn_clickHandler(event)" enabled="false"/>
</s:VGroup>
</s:Application>