如何将.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 清空数据库结果

将目录从资产复制到数据文件夹

无法将 SQLite 数据库从资产文件夹复制到设备内存

AS3 如何将数据从对象提取到剪贴板、rest、db、文件等?

将 SQLite 数据库从 sdcard 导入到 android - 没有资产文件夹