我写了一个小程序,读取现有数据库,数据库内容已经添加好了,放到raw目录下,按照网上的方法程序了一半。
现在可以将数据库写到SD卡中,但是数据库文件不全,只写了3072K,里面有一个android_metadata表,但我数据库中没有这个表。不知道什么原因。网上查找未找到解决方法。找了好几天,无结果,请大家帮忙看看。多谢。

解决方案 »

  1.   

    Assets/raw单个文件有大小限制的1M大小,大了要分割才行
      

  2.   

    文件没有超过1M,只有682 KB。我在写文件的时候每写一次让它sleep了5秒,发现大小再变化,不断增大。但不知道为什么到最后又变成了3072 K。
      

  3.   


    贴点代码看看 有没加后缀".sqlite"或".db"
      

  4.   

    if (!(new File(dbfile).exists())) {  //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
    InputStream is = this.context.getResources().openRawResource(
    R.raw.people); //欲导入的数据库
    FileOutputStream fos = new FileOutputStream(dbfile);
    byte[] buffer = new byte[BUFFER_SIZE];
    int count = 0;
    System.out.print("是不里"+String.valueOf(is.read(buffer)));
    while ((count = is.read(buffer)) > 0) {
    fos.write(buffer, 0, count);
    }
    is.close();
    fos.close();
    }
    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,
    null);
    return db;
      

  5.   

    System.out.print("是不里"+String.valueOf(is.read(buffer)));
            while ((count = is.read(buffer)) !=-1) {///试试是不是这里出问题啦
                    fos.write(buffer, 0, count);
               }
            is.close();
             fos.close();
      

  6.   


    输出关闭时这样试试
    fos.flush();     
    fos.close(); 
      

  7.   

    System.out.print("是不里"+String.valueOf(is.read(buffer)));
    把这句屏蔽了 要不少读了一次
                    
      

  8.   

    多谢fontlose耐心讲解。问题已解决,不知道哪的问题。正确代码如下。if (!(new File(dbfile).exists())) {  //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
    InputStream is = this.context.getResources().openRawResource(
    R.raw.people); //欲导入的数据库
    FileOutputStream fos = new FileOutputStream(dbfile);
    byte[] buffer = new byte[BUFFER_SIZE];
    int count = 0;
    while ((count = is.read(buffer)) > 0) {
    fos.write(buffer, 0, count);
    }
    fos.flush();
    fos.close();
    is.close();

    }
    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,
    null);
    return db;
      

  9.   


    System.out.print("是不里"+String.valueOf(is.read(buffer)));
    呵呵 你多读了次 但没写入 结果文件小了