欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

flex day4 文件的操作

程序员文章站 2022-05-06 08:11:58
...

File类,FileMode,FileStream,air支持文件同步和异步,在使用异步操作的时候,必须要使用

addEventListener()方法,添加事件监听。以下的介绍是从书上扒下来的,我觉得描述的挺好:

File对象是指向文件系统中文件或目录的路径。使用File对象创建指向文件或者文件夹的指针,

启动与文件或文件夹的交互。

FileStream对象,用于打开文件进行读写。在创建了File对象,指向新文件或者现有文件的指针后,

可以将该指针传递给FileStream对象,然后对文件进行数据流操作。

FileMode类定义了FileStream类的open()和openAsync()方法的fileMode参数中使用的字符串常量。

这些方法的fileMode参数确定了打开文件后的FileStream对象可以进行的操作,包括写入,读取,追加

和更新。

以下只是简单的文件操作。先熟悉一下流程。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx" backgroundColor="#323232">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[

			private function openFile():void{
				//documentsDirectory 是要打开的默认指文档的路径
				var file:File = File.desktopDirectory;
				//可以追加文件过滤的属性
				var textFilter:FileFilter = new FileFilter("text","*.as;*.html;*.css;*.txt;*.xml");
				file.browseForOpen("选择要打开的文件",[textFilter]);
				file.addEventListener(Event.SELECT,openDirectorySelect);
			}
			private function openDirectorySelect(evt:Event):void{
				var fs:FileStream = new FileStream();
				txtPath.text = File(evt.target).nativePath;
				fs.open(File(evt.target),FileMode.READ);
				txtArea.text = fs.readMultiByte(fs.bytesAvailable,"gb2312");
				fs.close();
			}
			private function writeFile():void{
				
				var fs:FileStream = new FileStream();
				fs.open(new File(txtPath.text),FileMode.WRITE);
				fs.writeMultiByte(txtArea.text,"gb2312");
			}
			
			private function saveFile():void{
				var file:File = File.desktopDirectory;
				file.browseForSave("请保存文件");
				file.addEventListener(Event.SELECT,saveEvent);
				
			}
			private function saveEvent(evt:Event):void{
				var fs:FileStream = new FileStream();
				var url:String = File(evt.target).nativePath+txtName.text;
				var file:File = new File(url);
				fs.open(file,FileMode.WRITE);
				fs.writeMultiByte(txtArea.text,"gb2312");
			}
		]]>
	</fx:Script>
	<mx:TextInput id="txtPath" x="10" y="10" width="321"/>
	
	<mx:Button id="btnOpen" x="339" y="10" label="Open" click="openFile()"/>
	
	<mx:Button id="btnWrite" x="420" y="10" label="write" click="writeFile()"/>
	
	<mx:TextArea id="txtArea" x="10" y="40" width="394" height="276"/>
	
	<mx:TextInput id="txtName" x="10" y="324" width="321"/>
	<mx:Button x="339" y="324" label="Save" click="saveFile()"/>
</s:WindowedApplication>

 

这里是打开和写入,保存文件的码。
有一点思路转不过来,就是在save的时候,应该用什么方法好,我这里的方法总感觉怪怪的,
要在txtName那里输入后缀才行,先用的fs去open,然后在用fs的write写入文件再去保存,
感觉逻辑怪怪的。 
相关标签: flex air