我正在尝试轮询文件以检查它是否已在磁盘上修改或删除。
如果网络速度较慢,如果我使用文件exists
或modificationDate
属性,则应用程序将挂起。
有没有办法异步进行?
样品
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 :(得分:0)
这可能有点hacky,但是使用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
}