3


ファイルをポーリングして、ディスク上で変更または削除されたかどうかを確認しようとしています。 ファイルまたはプロパティ
を使用するとネットワークが遅い場合、アプリケーションがハングします。existsmodificationDate

非同期で行う方法はありますか?

サンプル

var f:File = new File(url);
if (f.exists && f.modificationDate.getTime() > oldModificationDate) { // hangs on both exists and modificationDate calls
    // File changed on disk
    ...

助けてくれてありがとう、
パオロ

4

1 に答える 1

0

これは少しハックかもしれませんが、getDirectoryListingAsync() を使用するとどうなるでしょうか? 必要なファイルがあるディレクトリを指す一時的な File オブジェクトを作成できます。非同期ハンドラーが呼び出されると、ターゲットに一致するファイルが見つかるまで結果をループし、日付チェックを行うことができます。このようなもの:

var expectedName:String = "myFile";
var oldModificationDate:Date=new Date();

public function fileCheck(fileName:String)
{
File file = new File(fileName);
File dir = new File("/somefiles/localDir/");
dir.getDirectoryListingAsync();
dir.addEventListener(FileListEvent.DIRECTORY_LISTING, directoryListingHandler);
}

function directoryListingHandler(event:FileListEvent):void {
    var list:Array = event.files;
    for (var i:uint = 0; i < list.length; i++) {
        if(list[i].name==expectedName && f.modificationDate.getTime() > oldModificationDate)
          {
            fileFoundHandler();
          }
    }
}

function fileFoundHandler():void
{
  //your response code goes here
}
于 2013-09-04T20:38:05.433 に答える