我想把自己用管理工具建立的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
}
这是复制数据库文件的代码 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
}
"data/data/com.assembly/databases/ASMdb.db");while ((count = is.read(buffer)) != -1) {
out.write(buffer, 0, count); }
+1
ASMdb.db文件大小不要超过1MB
"data/data/com.assembly/databases/ASMdb.db");这句应该在外面,要不每次都要覆盖。int len = -1;
while((len = in.read(buffer))>0){
fos.write(buffer,0,len);
}lz基础似乎不太好。复习下基础吧