본문 바로가기

OS/Android

Android Assets DB 파일 패키지 data 폴더로 이동하기

반응형

Asset 폴더에 DB 파일을 고유 data 폴더로 이동시키는 로직이 필요하여 만들어보았다.

    //Asset 폴더 경로가 asset/db/abc.db일때
    private static final String ASSETS_FILE_DB = "db/abc.db"; 
    
    public void copyDbFile(Context context) //assets/db 파일을 가지고와서 패키지 파일에 복사하는 작업
    {
        AssetManager am = context.getAssets();
        try
        {
            InputStream is = am.open(Const.ASSETS_FILE_DB);
            BufferedInputStream bis = new BufferedInputStream(is);
            String strDbPath = context.getDatabasePath("tmp").getParent(); ///data/user/0/com.mysample.myapplication/databases
            //getDatabasePath("tmp")의 파라미터 tmp는 아무 의미없는 값임.
            
            File f = new File(strDbPath + "/" + Const.DB_NAME);

            FileOutputStream fos = new FileOutputStream(f);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            int read = -1;

            byte[] buffer = new byte[1024];
            while ((read = bis.read(buffer, 0, 1024)) != -1)
            {
                bos.write(buffer, 0, read);
            }

            bos.flush();
            bos.close();
            fos.close();

            bis.close();

        }catch (Exception e)
        {

        }
    }

 

반응형