2014-12-07 152 views
0

我正试图将SQL数据库导入到我的Adobe Air iOS应用程序中。我有调用工作,一切似乎工作,但新的数据库文件不能被读取。以下是我的代码。AS3将文件流保存到文件

function onInvoke(event:InvokeEvent):void{ 
    if(event.arguments && event.arguments.length) 
    {  
     contentUri = event.arguments[0] as String; 
     file_db = new File(contentUri); 
     fs_db = new FileStream(); 
     fs_db.addEventListener(Event.COMPLETE, import_db); 
     fs_db.openAsync(file_db, FileMode.READ);  
    } 
} 

我的导入功能如下:

function import_db(event:Event):void{ 

    fs_db.removeEventListener(Event.COMPLETE, import_db); 
    var fs:FileStream = new FileStream(); 
    var myfile:File=File.applicationStorageDirectory.resolvePath("testDB.db"); 
    var fileContent:String = fs_db.readUTFBytes(fs_db.bytesAvailable); 

    fs.open(myfile,FileMode.WRITE); 
    fs.writeUTFBytes(fileContent); 
    fs.addEventListener(Event.CLOSE, fileClosed); 
    fs.close(); 


    function fileClosed(e:Event):void{ 
    // do other stuff 
    } 
}    

每一件事似乎执行,但是当我尝试连接到数据库,我收到SQL错误:

错误#2044:未处理SQLErrorEvent :. errorID = 3138,operation = open,message =错误#3138:打开的文件不是数据库文件。

任何指导理解

回答

0

想通了,读字节转换为bytearray,然后进入该文件。

var mybytes:ByteArray=new ByteArray(); 
fs_db.readBytes(mybytes,0,fs_db.bytesAvailable); 


fs.openAsync(myfile,FileMode.WRITE); 
fs.writeBytes(mybytes,0,mybytes.length);