您的位置:首页 > 移动开发 > Android开发

将数据库保存到Android默认位置

2016-06-14 20:23 363 查看
基本思想:用FileInputStream 读取数据库,再用FileOutputStream 把读到的数据库写入到那个目录。

                   代码实现:

package cn.edu.bztc.happyidiom.db;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
import cn.edu.bztc.happyidiom.R;

public class DBOpenHelper {
private final int BUFFER_SIZE = 400000;
private static final String DB_NAME = "idiom.db";
public static final String PACKAGE_NAME = "cn.edu.bztc.happyidiom";
public static final String DB_PATH = "/data"
+ Environment.getDataDirectory().getAbsolutePath() + "/"
+ PACKAGE_NAME + "/databases";
private Context context;

public DBOpenHelper(Context context) {
this.context = context;
}

public SQLiteDatabase openDatabase(){
try{
File myDataPath =new File(DB_PATH);
if(!myDataPath.exists()){
myDataPath.mkdirs();
}
String dbfile=myDataPath+"/"+DB_NAME;
if(!(new File(dbfile).exists())){
InputStream is=context.getResources().openRawResource(R.raw.idioms);
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.close();
is.close();
}
SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
return db;
}catch(FileNotFoundException e){
Log.e("Database", "File not found");
e.printStackTrace();
}catch (IOException e) {
// TODO: handle exception
Log.e("Database", "IO exception");
e.printStackTrace();
}
return null;
}
}


                   写完代码后,还要测试有没有复制成功?
先要搭建测试环境:

   在AndroidManifest,xml中加入下面代码:    

<uses-library android:name="android.test.runner" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.edu.bztc.happyidiom">
</instrumentation>
<span style="font-size:18px;">创建测试类:</span>
<span style="font-size:18px;">     </span><pre name="code" class="java">package cn.edu.bztc.happyidiom.test;

import cn.edu.bztc.happyidiom.db.DBOpenHelper;
import android.test.AndroidTestCase;

public class DBOpenHelperTest extends AndroidTestCase {
public void testDBCopy() {
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());
dbOpenHelper.openDatabase();
}

}







    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: