Sao Chép Database (SQL Lite) Đến SDCARD Khi Cài Đặt .*apk

Yêu cầu bài toán: Xây dựng chương trình câu hỏi trắc nghiệm. Với số câu hỏi và đáp án sẽ được người lập trình lưu trữ trước trong sqllite. Khi cài đặt ứng dụng lần đầu tiên và khởi động ứng dụng. Chương trình sẽ sao chép database, tệp tin liên quan sang sdcard.
Xây dựng ứng dụng.
B1:Tạo CSDL SQL Lite. Sau Đó Copy Database vào đường /assets/sqlite/TAN.s3db
B2: Sử dụng class mainativity.java
public class QuanLyHeThong extends ActionBarActivity {
// Tên database
public static String DB_Name="TAN.s3db";
// Lấy đường dẫn sdcard

public static String path=Environment.getExternalStorageDirectory()+"/"+DB_Name
@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.quanlyhethong);
	// lấy đường dẫn đầy đủ của tệp tin database
	File file=getApplicationContext().getDatabasePath(DUONGDAN_FULL)
	// Kiểm tra database trong sdcard có tồn tại không?
	if(Copy_Database(this)) Toast.makeText(getApplicationContext(),"Đãchép",Toast.LENGTH_SHORT).show();
	else
		Toast.makeText(getApplicationContext(),"Tồn tại",Toast.LENGTH_SHORT).show();
}
	// Hàm sao chép database từ thư mục assest sang sdcard
public Boolean Copy_Database(Context context) {
	try {
		InputStream inputStream = context.getAssets().open(DB_Name);
		OutputStream outputStream = new FileOutputStream(DB_Name);
		byte[] buff = new byte[1024];
		int length = 0;
		while ((length = inputStream.read(buff)) > 0) {
			outputStream.write(buff, 0, length);
		}
		outputStream.flush();
		outputStream.close();
		return true;
	} catch (IOException e)
	{e.printStackTrace();
		return false;
	}
}

Phần Giải Thích Thêm
1. Sử dụng luồng byte của lớp cha OutputStream,InputStream. Và sau đó đọc từng byte từ luồng nhập ở thư mục asset chép vào sdcard.
2. Tham khảo phương thức và định nghĩa từ luồng nhập bên dưới
Android