开发者

Recursive Folder/Directory Copy with AS3 /Air

Is it possible to use pause/resume function to this??

source.copyTo( destination );

It would be great if you can sen开发者_JAVA技巧d it at the earliest.


I found one solution here CookBook from Adobe

private function copyInto(directoryToCopy:File, locationCopyingTo:File):void
{
    var directory:Array = directoryToCopy.getDirectoryListing();

    for each (var f:File in directory)
    {
        if (f.isDirectory)
          copyInto(f, locationCopyingTo.resolvePath(f.name));
        else
          f.copyTo(locationCopyingTo.resolvePath(f.name), true);
    }
}


Or you could just use the File.copyTo() method:

var source:File = new File();
source.resolvePath( 'sourceFolder' );
var destination:File = new File();
destination.resolvePath( 'destinationFolder' );
source.copyTo( destination );

If the directories are large and you don't want your app to be stuck waiting for the copy, you can use copyToAsync, which will cause the source file to dispatch Event.COMPLETE when the job's done.


Here is the modified code from above if anyone wants to copy the entire directory; empty folders and all. Notice the "copyEmptyFolders" parameter to be used in the arguments.

    //Recursivley copies directory.
    private static function copyInto(directoryToCopy:File, locationCopyingTo:File, copyEmptyFolders:Boolean=true):void
    {

        var directory:Array = directoryToCopy.getDirectoryListing();

        for each (var f:File in directory)
        {
            if (f.isDirectory)
            {

                // Copies a folder whether it is empty or not.
                if( copyEmptyFolders ) f.copyTo(locationCopyingTo.resolvePath(f.name), true);

                // Recurse thru folder.
                copyInto(f, locationCopyingTo.resolvePath(f.name));

            }
            else
                f.copyTo(locationCopyingTo.resolvePath(f.name), true);

        }

    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜