我用自己编辑好的sqlite数据库文件,里面包含有数据,我把数据库文件放在raw文件(文件大小超过1M)里,按照网络上的方法使用流写到sdcard上面,试了一天试不成功,每次复制到sdcard上文件就是0字节了,求在这方面有经验的高手帮助!!!private SQLiteDatabase openDatabase() {
try {
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is =getResources().openRawResource(R.raw.nationexam);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
} fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}

解决方案 »

  1.   


    我想靠代码来实现的,在程序安装后,第一次启动,将数据库文件复制到手机sdcard上
      

  2.   


    InputStream is =getResources().openRawResource(R.raw.nationexam);
    FileOutputStream fos = new FileOutputStream(databaseFilename);
    int len=0;
    while(true){
    byte[] datas =  new byte[1024];
    len = is.read(datas,0,1024);
    if(len<=0){
    break;
    }else{
    fos.write(datas, 0, len);
    fos.flush();
    }
    }
    试试这样...
      

  3.   

    我的文件大于1M,复制不过过去,sdcard读写的权限也有设置了,我主要是想知道通常这种情况是怎么解决的。有数据的数据库,如何附加在apk里面,安装后第一次运行,讲数据库复制,或者移动到手机系统目录,这样数据库才能使用。
      

  4.   

    通常在 2.x 系统下,是分成多个小于 1M 的文件,同时放在一个目录下,然后在 android 运行的时候进行文件合并的;在 3.x 系统,貌似是可以支持大于 1M 的文件了。