flex_将数据保存到本地文件;

本文介绍了一个Flex类FileReferenceSaveExample,用于实现数据的本地读取和保存。类中详细定义了处理文件选择、加载、保存进度和错误的事件监听器。通过App.mxml中的按钮控制文件的加载和保存,展示了如何在Flex应用中与本地文件系统交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结果输出:

=>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>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值