0

actionscript でディレクトリをロードしたい。そのために File クラスを使用しますが、残念ながら機能しません。

これが私がしたことです。最初に、次のコードを使用して applicationStorageDirectory にディレクトリを作成しました。

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

その後、アプリケーションがいくつかのファイルをそのフォルダーにコピーするように、イベントをディスパッチします。これを行うには、メソッド File.copyToAsync を使用します (これは機能するため、これは問題ではありません)。すべてのファイルがそのディレクトリにコピーされたら、再度 File 呼び出しを使用してそのディレクトリをロードしようとします。私がそれをしたい理由は、コンテンツ/データをバイト配列として必要とするからです。File クラスの data プロパティは、以前に load メソッドが正常に呼び出された場合にのみ設定されます。

ディレクトリはアプリケーション ストレージ ディレクトリにあるため (ファイル オブジェクトの 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 に設定されているために、そのエラーが発生しますか?

よろしくマーカス

4

1 に答える 1

0

Fileディレクトリを指しているときに、その中に含まれるファイルのデータが含まれていないと思います。File.getDirectoryListing()フォルダー内のすべてのファイルをループし、それらのバイトを個別に ZIP アーカイブに追加するために使用する必要があります。サブディレクトリに出くわしたかどうかを確認することを忘れないでください...

これを行う方法の例については、このリンクを確認してください。

于 2012-11-22T22:00:21.243 に答える