我想把自己用管理工具建立的sqlite数据库 打包到APK中  在程序启动时复制到data/data/...../databases/这个目录下  可是我在复制过程中设置的buffer字节数组如果小了  复制后的数据库就打不开 我把那个复制到手机上的数据库拷贝到电脑上 用管理工具也打不开了 提示说 这个文件不是数据库文件  可是如果我把buffer设置的更大 就不会有这样的问题     我单步执行代码 发现buffer太小的话 复制数据库文件的代码 那个循环 循环了至少两次 但是buffer设置大点 循环就只有一次  这????????????????????????????????????、为什么啊????  
这是复制数据库文件的代码   byte[] buffer = new byte[1024];
    // in = getResources().getAssets().open("ASMdb.db");
    try
    {
while (in.read(buffer) > 0)
{
    FileOutputStream out = new FileOutputStream(
    "data/data/com.assembly/databases/ASMdb.db");
    out.write(buffer);
}     } catch (Exception e)
    {
// TODO: handle exception
    }

解决方案 »

  1.   

    FileOutputStream out = new FileOutputStream(
    "data/data/com.assembly/databases/ASMdb.db");while ((count = is.read(buffer)) != -1) {
        out.write(buffer, 0,  count); }
      

  2.   


    +1
    ASMdb.db文件大小不要超过1MB
      

  3.   

    FileOutputStream out = new FileOutputStream(
     "data/data/com.assembly/databases/ASMdb.db");这句应该在外面,要不每次都要覆盖。int len = -1;
    while((len = in.read(buffer))>0){
        fos.write(buffer,0,len);
    }lz基础似乎不太好。复习下基础吧