功能说明:能选择一个文件夹,并将这个文件夹下的文件夹自动遍历,获取一组该文件夹下所有文件的位置。
思路说明:这里呢,我将使用一个递归函数来解决这个问题。
- <?xml version="1.0" encoding="utf-8"?>
- <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
- <mx:Script>
- <![CDATA[
- private var sysFile:File;
- private var FilrUrlArr:Array;
- private var key:int;//递归结束标志
-
- private function init():void{
- sysFile = new File();
- sysFile.addEventListener(Event.SELECT,selectHandler);
- FilrUrlArr = new Array();
- }
-
- /**
- 递归函数开始递归
- **/
- private function getFileArr(_url:String=""):void{
- key++;
- if(_url!=""){
- sysFile.url = _url;
- }
- var arr:Array = sysFile.getDirectoryListing();
- var leg:int = arr.length;
- for(var i:int=0;i<leg;i++){
- var file:File = arr[i] as File;
- if(file.isDirectory){
- getFileArr(file.url);
- }else{
- FilrUrlArr.push(file.url);
- }
- }
- key--;
- if(key==0){//判断递归是否结束
- Idone();
- }
- }
-
- /**
- 开始执行获取文件地址的方法
- **/
- private function selectHandler(event:Event):void{
- getFileArr();
- }
-
-
- /**
- 这里可以切一个断点看看结果,或者干脆用用trace
- **/
- private function Idone():void{
- FilrUrlArr;
- }
-
-
- /**
- 开始执行按钮方法
- **/
- private function clickHanlder(event:MouseEvent):void{
- sysFile.browseForDirectory("请选择您的文件夹");
- }
- ]]>
- </mx:Script>
- <mx:Button label="打开" click="clickHanlder(event)" />
- </mx:WindowedApplication>