如何在as3中加载本地目录

时间:2012-11-22 21:24:47

标签: actionscript-3 flex air

我想在actionscript中加载一个目录。要做到这一点,我使用File类,但遗憾的是它不起作用。

这就是我所做的。首先,我使用以下代码在applicationStorageDirectory中创建了目录:

var root:File = File.applicationStorageDirectory.resolvePath(UIDUtil.createUID());
root.createDirectory();

之后我调度一个事件,以便应用程序将一些文件复制到该文件夹​​中。为此,我使用方法File.copyToAsync(这是有效的,所以这不是问题)。当所有文件都复制到该目录时,我尝试再次使用File调用加载该目录。我想这样做的原因是,我需要将内容/数据作为字节数组。仅在成功调用load方法之前设置File类的data属性。

由于目录位于应用程序存储目录中(文件对象的url属性具有以下内容:app-storage:/ FF011DBC-2E92-46A8-D5F8-29FE1DD8FA7A)我认为只需调用load方法即可。我错了......虽然该方法的文档说我可以在应用程序在AIR中运行并且要加载的文件位于应用程序沙箱中时调用该方法,但是我收到以下错误:

Error #2044: Unhandled IOErrorEvent:. text=Error #2038: File I/O Error.
at flash.filesystem::File/resolveComponents()
at flash.filesystem::File/resolvePath()
    ...

你有什么想法可能有什么不对吗?甚至可以使用File类加载目录吗?或者是否因为文件对象中的isDirectory标志设置为true而发生错误?

亲切的问候 马库斯

1 个答案:

答案 0 :(得分:0)

我相信File指向目录时,不包含其中包含的文件的数据。您必须使用File.getDirectoryListing()循环文件夹的所有文件,并将它们的字节分别附加到ZIP存档。不要忘记检查你是否遇到过子目录...

您可以查看此link以获取有关如何执行此操作的示例。