結果輸出:
=>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>