2017-02-22 82 views
2

您好我有一个关于的FileStream openAsync读取文件有问题,我有一个听众和fileReadCompleteHandler等待完整的FileStream openAsync引发Error#1009

var file:File = File.applicationStorageDirectory.resolvePath(fName+'.'+EXT); 
    var fileStream:FileStream = new FileStream(); 


    if (!file.exists) { 
       this.dispatchEvent(new AppEvent(AppEvent.DATA, null, false));           

    }else { 

     fileStream.addEventListener(Event.COMPLETE, fileReadCompleteHandler); 
     fileStream.openAsync(file, FileMode.READ); 
     fileStream.addEventListener(Event.CLOSE, fileClosedHandler); 
     fileStream.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler); 
    } 


    private function fileReadCompleteHandler(event:Event):void { 
     var ob:Object; 
     var fileStream:FileStream = FileStream(event.currentTarget); 

     try { 
      ob.source = fileStream.readObject(); 
     }catch (e:Error) { 
      trace('error:' + e.message) 
     } 

     fileStream.removeEventListener(Event.COMPLETE, fileReadCompleteHandler); 
     fileStream.close(); 

     } 

我得到错误:“错误#1009:无法访问属性或空对象引用的方法“。 我缺少什么,如何从openAsync读取对象?

感谢

+0

可以共享堆跟踪错误?如果没有行号,很难知道错误发生的位置。 – joshtynjala

回答

2

你永远不会初始化目标ob,null对象的过程中访问领域给你#1009:

var ob:Object; 
    var fileStream:FileStream = FileStream(event.currentTarget); 

    try { 
     ob.source = fileStream.readObject(); 

您需要:

var ob:Object = new Object; 
    var fileStream:FileStream = FileStream(event.currentTarget); 

    try { 
     ob.source = fileStream.readObject(); 
+0

你是对的Organis,这是我的错误,现在它按预期工作 –