对于我的应用程序,我需要从我自己的数据库中读取数据。我将我的数据库放在“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卡中并从中读取。
答案 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
- 请仔细检查!