2012-08-28 81 views
3


我想輪詢文件以檢查它是否已被修改或在磁盤上刪除。
如果使用文件existsmodificationDate屬性的網絡速度較慢,應用程序將掛起。如何在actionscript3中異步獲取文件修改日期

有沒有辦法異步做到這一點?

樣品

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

感謝您的幫助,
保羅

+0

如果針對Flash 11.4,則可以使用'actionscript worker',它本質上是一個單獨的線程。 – BadFeelingAboutThis

+0

感謝您的指點,但我們的版本中沒有工人。 – Paull

+0

這是通過Adobe Air嗎? – BadFeelingAboutThis

回答

0

這可能有點哈克,但關於使用什麼getDirectoryListingAsync()?您可以創建一個臨時文件對象,指向所需文件所在的目錄。當調用異步處理程序時,可以遍歷結果,直到找到與目標匹配的文件,然後進行日期檢查。類似這樣的:

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 
} 
相關問題