将数据从资产复制到应用程序的问题

时间:2011-07-07 10:27:51

标签: android database

对于我的应用程序,我需要从我自己的数据库中读取数据。我将我的数据库放在“ASSETS”文件夹中,并使用以下代码复制到路径

DB_PATH = "/data/data/com.android.example/databases/"

但是表格没有被创建。它抛出异常并被迫关闭。

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 = DB_PATH + 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();

}

在上面的代码中,“buffer”没有获取数据。所以它不会将数据写入myOutput。我在网上发现了这个代码并进行了修改。任何机构都可以帮我把资产文件夹中的文件读到SD卡。我需要从外部文件中将数据存储在SD卡中并从中读取。

2 个答案:

答案 0 :(得分:1)

检查数据库文件大小,“assets”文件夹中的文件存在大约1.2 Mb的限制。 解决这个问题的一种方法是使用Unix“split”命令,在res / raw文件夹中添加拆分文件,然后通过稍微修改代码将它们拼接回db。 阅读此博客(http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/)了解更多信息。

答案 1 :(得分:0)

您必须将数据放在ASSETS文件夹中但放入assets - 请仔细检查!