| djyamato |
26.01.2012 22:20 |
Как понять что рекурсивный обход папок закончился
Вложений: 1
Здраствуйте
Что-то я запутался, подскажите пожалуйста
вот есть у меня структура папок (на скрине)
Хотелось бы получить такой набор:
1.1.foto - список файлов
1.1.txt - список файлов
1.1.video - список файлов
1.2.foto - список файлов
1.1.txt - список файлов
итд
"1.1.foto" - это текстовый ID
Я написал такой код
Код AS3:
protected var dir:File;
protected var _currentDir:DIR;
protected var _recurtionDepth:int=4;
protected var _currentRecurtionDepth:int=0;
protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void
{
var parentDir:DIR=new DIR("data");
_currentDir=parentDir;
listDirectory("data",parentDir);
trace("recurtion finish "+ObjectUtil.toString(parentDir));
}
protected function listDirectory(dirName:String,dirObject:DIR):void
{
dir=File.applicationDirectory.resolvePath(dirName);
try
{
dir.getDirectoryListingAsync();
dir.addEventListener(FileListEvent.DIRECTORY_LISTING, directoryListCompleteHandler);
dir.addEventListener(IOErrorEvent.IO_ERROR,fileIOErrorHandler);
}
catch(error:Error)
{
trace("DIRECTORY DOES NOT EXIST");
}
}
private function directoryListCompleteHandler(event : FileListEvent) : void
{
_currentRecurtionDepth+=1;
dir.removeEventListener(FileListEvent.DIRECTORY_LISTING, directoryListCompleteHandler);
dir.removeEventListener(IOErrorEvent.IO_ERROR,fileIOErrorHandler);
var cont : Array = event.files;
var tmpObject:Object;
var arr:Array=new Array();
var itemsID:String="";
for (var i : uint = 0;i<cont.length;i++)
{
if(cont[i].isDirectory)
{
var _dir:DIR=new DIR(cont[i].name);
_currentDir.directories.push(_dir);
listDirectory(cont[i].nativePath,_dir);
}
else
{
_currentDir.files.push(cont[i].nativePath);
}
}
}
protected function fileIOErrorHandler(event:IOErrorEvent):void
{
trace("dir does not exists");
}
Код AS3:
package VO
{
public class DIR
{
protected var _id:String;
protected var _directories:Vector.<DIR>=new Vector.<DIR>();
protected var _files:Array=new Array();
public function DIR(id:String,directories:Vector.<DIR>=null,files:Array=null)
{
_id=id;
if(directories)
{
_directories=directories;
}
}
public function get id():String
{
return _id;
}
public function set directories(val:Vector.<DIR>):void
{
_directories=val;
}
public function get directories():Vector.<DIR>
{
return _directories;
}
public function set files(val:Array):void
{
_files=val;
}
public function get files():Array
{
return _files;
}
}
}
Как мне понять что "просмотр" папки data закончился ?
И вообще, меня терзают смутные сомнения, а не заморочился ли я и возможно, сделать можно гораздо проще ?
|