結果輸出:
=>File_Data:I Love You, Baby!我好想好想你哦!=>File Was successfully Loaded;=>Loaded(33) of (33) bytes;=>Loaded(0) of (33) bytes;
=>FileReferenceLoadExample
package com.learn.mix
{
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 flash.utils.ByteArray;
import mx.core.UIComponent;
/**
* 從檔案載入資料類
* @author cen
*/
public class FileReferenceLoadExample extends UIComponent
{
/**
* 屬性*/
/*檔案對象*/
private var fileRef:FileReference;
/**
* constructor
*/
public function FileReferenceLoadExample()
{
/**
* 初始設定檔案對象*/
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, onFileSelectedHandler);
fileRef.addEventListener(Event.CANCEL, onCancelHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler);
/*允許檔案類型*/
var textTypeFilter:FileFilter = new FileFilter("TextFiles(*.txt,*.rtf)", "*.txt;*.rtf");
/*選擇檔案*/
fileRef.browse([textTypeFilter]);
}
/**
* 選擇檔案
* @param event
*/
private function onFileSelectedHandler(event:Event):void {
fileRef.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
fileRef.addEventListener(Event.COMPLETE, onCompleteHandler);
/*載入資料*/
fileRef.load();
}
/**
* 載入進度
* @param event
*
*/
private function onProgressHandler(event:ProgressEvent):void
{
trace("=>Loaded(" + event.bytesLoaded + ") of (" + event.bytesTotal + ") bytes;");
}
/**
* 檔案載入完成
* @param event
*
*/
private function onCompleteHandler(event:Event):void
{
trace("=>File Was successfully Loaded;");
var data:ByteArray = fileRef.data;
data.position = 0;
// var result:String = data.readUTFBytes(data.length);//如果外部txt檔案有中文,會出現亂碼;故使用下面方法轉換;
var result:String = data.readMultiByte(data.length, "gb2312");
trace("=>File_Data:"+result);
}
/**
* 取消事件
* @param event
*
*/
private function onCancelHandler(event:Event):void
{
trace("=>The Browse request was canceled by the user;");
}
/**
* 輸入/輸出錯誤
* @param event
*
*/
private function onIOErrorHandler(event:IOErrorEvent):void
{
trace("=>There was an IO Error;");
}
/**
* 安全錯誤
* @param event
*
*/
private function onSecurityErrorHandler(event:SecurityErrorEvent):void
{
trace("=>There was a security error;");
}
}
}
=>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" creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import com.learn.mix.FileReferenceLoadExample;
import mx.events.FlexEvent;
private var fileRef:FileReferenceLoadExample;
protected function creationCompleteHandler(event:FlexEvent):void
{
}
protected function btn_clickHandler(event:MouseEvent):void
{
fileRef = new FileReferenceLoadExample();
addElement(fileRef);
}
]]>
</fx:Script>
<s:VGroup width="450" height="230" verticalCenter="0" horizontalCenter="0" horizontalAlign="center" verticalAlign="middle">
<s:Button label="載入資料" click="btn_clickHandler(event)"/>
</s:VGroup>
</s:Application>