如何将.db文件从资产放到数据/数据/包名/ android [重复]
Posted
技术标签:
【中文标题】如何将.db文件从资产放到数据/数据/包名/ android [重复]【英文标题】:How to put .db file from assets to data/data/packagename/ android [duplicate] 【发布时间】:2013-01-01 00:18:36 【问题描述】:可能重复:How to use an existing database with an android application
如何将 .db 文件从 assets 放到 data/data/packagename/ 而不使用在 assets 中复制 .db 文件的内容。我不想创建数据库,因为将 .db 文件放入资产中是没有用的。我对此进行了探索,但所有人都在再次创建数据库,但我只想直接放置该 .db 文件。
【问题讨论】:
【参考方案1】:使用这个
private void copyDataBase() throws IOException
// Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = "/data/data/"
+getApplicationContext().getPackageName()
+ "/databases/" + DB_NAME;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0)
myOutput.write(buffer, 0, length);
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
【讨论】:
我不想用那个。我只是想复制数据/数据/包名中的 .db 文件 这就是它的作用。没有可调用的“复制”函数,因此程序必须自己写出一个新文件。原件是只读的,因此不能“移动”。而且没有办法在.apk中打包一个可写的副本。 这是从资产中放置数据库的唯一方法...否则您必须以编程方式创建数据库.. 这给了我该目录中的 filenotfound 异常。没有名为数据库的文件夹,以上是关于如何将.db文件从资产放到数据/数据/包名/ android [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sqldelight 读取位于资产中的 db 文件 - Android
如何从android应用程序导出数据库?使用 ADB run-as 清空数据库结果