프로그래밍/Android 짜투리 지식
[android] db asset경로에서 참조하기
선제
2012. 12. 7. 00:23
외부 database를 참조하고 싶을때, 어떻게 해야할까.
기본적으로 database를 생성하면, package에 포함되 버려서 database를 열람하지 못한다. (emulator에서는 explorer로 볼수 있다. 하지만 폰에서는 확인하지 못한다.)
DATABASE 운용이 잘 되는 개발자라면, 별 어려움을 못느끼겠지만... 그런사람이 얼마나 될까.
그래서 내부 database를 외부로 빼내서, sqlite browser나 파이어폭스 sqlite manager로 보고싶다.
public static final String PACKAGE_DIR = "/data/data/com.mob.package/"; public static final String DATABASE_NAME = "db/testdb.sqlite"; public static final String COPY2DATABASE_NAME = "testdb.sqlite"; public void doCopy() { // check File folder = new File(PACKAGE_DIR + "databases"); folder.mkdirs(); File outfile = new File(PACKAGE_DIR + "databases/" + COPY2DATABASE_NAME); outfile.delete(); if (outfile.length() <= 0) { AssetManager assetManager = getResources().getAssets(); try { InputStream is = assetManager.open(DATABASE_NAME, AssetManager.ACCESS_BUFFER); long filesize = is.available(); byte[] tempdata = new byte[(int) filesize]; is.read(tempdata); is.close(); outfile.createNewFile(); FileOutputStream fo = new FileOutputStream(outfile); fo.write(tempdata); fo.close(); } catch (IOException e) { e.printStackTrace(); } } } }