AS3将文件流保存到文件

时间:2014-12-07 18:59:54

标签: ios actionscript-3 flash air

我正在尝试将SQL数据库导入我的Adobe Air iOS应用程序。我有调用工作,一切似乎都有效但新的数据库文件无法读取。以下是我的代码。

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:打开的文件不是数据库文件。

感谢任何指导

1 个答案:

答案 0 :(得分: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);