我正在使用ActionScript库项目在Mobile和桌面ActionScript项目之间共享代码和资源/资源。
通过“库路径”选项卡上的“添加项目”选项将库项目添加到其他两个项目中,链接类型为“合并到代码”,其中的所有类都可以通过其他项目,并正常工作。
但是它包含一个SQLite数据库文件,我想在第一次加载应用程序时将其复制到目标系统上的File.applicationStorageDirectory
,我不知道如何获取对该文件的引用在图书馆项目中将其复制出来。
db文件的位置是:LibraryProj - src/database/dbFile.db
我想使用File.applicationDirectory然后一个路径'into'到swf会让我访问它,但以下测试都没有说文件存在。
var test:File;
test = File.applicationDirectory.resolvePath("app:/src/database/dbFileDb.db");
trace("test.exists==" + test.exists);
test = File.applicationDirectory.resolvePath("src/database/dbFileDb.db");
trace("test.exists==" + test.exists);
test = File.applicationDirectory.resolvePath("database/dbFileDb.db");
trace("test.exists==" + test.exists);
test = File.applicationDirectory.resolvePath("dbFileDb.db");
trace("test.exists==" + test.exists);
这是将资源/资产文件从包含合并库的swf复制到应用程序的存储目录中的正确方法吗?是否有可能以这种方式从图书馆项目共享资源/资产?
非常感谢任何建议。
答案 0 :(得分:1)
在做了一些关于在AS3中使用[Embed]
标签的研究之后,我现在已经知道这是我应该用来使文件可用于消费项目(我之前只使用过)它用于图像,并没有考虑到其他文件类型。)
[Embed('igniteDb.db', mimeType="application/octet-stream")]
public static const myReferenceDbFile:Class;
使用以下代码将文件复制到File.applicationStorageDirectory
我。它将嵌入文件转换为字节数组,然后通过FileStream
类将其写入目标文件。
//write the embedded database file data into app user files directory
var bundleDbBytes:ByteArray;
bundleDbBytes = new myReferenceDbFile();//gets a reference to the embedded db file
var outputDbFile:File = File.applicationStorageDirectory.resolvePath(DB_FILE_NAME);
var fileStream:FileStream = new FileStream();
fileStream.open(outputDbFile, FileMode.UPDATE);
fileStream.writeBytes(bundleDbBytes);
fileStream.close();
嘿,presto,数据库已经可以使用了。