23.8.浏览本地文件

23.8.1.问题
我想使用打开对话框和保存对话框用于打开和保存文件。
23.8.2.解决办法
使用flash.filesystem.File类的browse开头的那些方法。
23.8.3.讨论
File类提供了一个对话框窗口用于打开一个或多个文件。使用File.browseForOpen方法选择一个文件时select 事件被触发, 使用File.browseForOpenMultiple 方法选择多个文件时selecteMutiple事件被触发。

下面的例子打开一个对话框选择一个特定扩展名的文件:
+展开
-ActionScript
private var file:File = new File();
private var filter:FileFilter = new FileFilter( "Text""*.txt""*.xml","*.html");
private function initHandler():void {
file.browseForOpen( "Open File" , [filter] );
file.addEventListener( Event.SELECT, selectHandler );
file.addEventListener( Event.CANCEL, cancelHandler );
}
private function selectHandler( evt:Event ):void {
var stream:FileStream = new FileStream();
stream.open( file, FileMode.READ );
trace( stream.readUTFBytes( stream.bytesAvailable ) );
stream.close();
}
private function cancelHandler( evt:Event ):void {
trace( "Browse cancelled.");
}

一个新的File对象被创建,File.browseForOpen方法打开一个对话框,使用FileFilter类指定特定的文件类型可被选择,每次只能选择一个文件。监听select事件,在selectHandler事件处理函数中,FileStream对象把File实例放置到读取缓冲区中。

File.browseForOpenMultiple方法打开的对话框可以一次选择多个文件, selectMultiple事件被触发,事件类型变成了FileListEvent:
+展开
-ActionScript
private var file:File;
private var filter:FileFilter = newFileFilter( "Text""*.txt","*.xml,","*.html");
private function initHandler():void {
file = File.desktopDirectory;
file.browseForOpenMultiple( "Open File" , [filter] );
file.addEventListener( FileListEvent.SELECT_MULTIPLE, selectHandler );
}
private function selectHandler( evt:FileListEvent ):void {
trace ( "Selected files from: " + file.url + "\n" );
var files:Array = evt.files;
for ( var i:int = 0; i < files.length; i++ ) {
trace ( ( files[i] as File ).name + "\n" );
}
}

在这个例子中,打开文件对话框被打开并指向用户的桌面目录,选择文件后,selectHandler 发被调用并打印出被选择的文件名。

File类也支持保存对话框,在保存对话框里,用户选择一个目录,输入文件名保存文件。下面的例子打开保存文件对话框,写入文本Hello World到目标文件:
+展开
-ActionScript
private var file:File;
private function initHandler():void {
file = File.desktopDirectory;
file.browseForSave( "Save As" );
file.addEventListener( Event.SELECT, selectHandler );
}
private function selectHandler( evt:Event ):void {
var stream:FileStream = new FileStream();
stream.open( evt.target as File, FileMode.WRITE );
stream.writeUTFBytes( "Hello World." );
stream.close();
}

Browse系列方法会适应不同的操作系统,对于用户选择和保存文件提供了极大的方便。

加支付宝好友偷能量挖...


评论(0)网络
阅读(99)喜欢(0)flash/flex/fcs/AIR