2019년 12월 10일 화요일

[Android] Asset 파일 복사하기

Android 앱에 파일을 함께 배포할때 assets 폴더를 이용한다.


Asset에 있는 파일은 Apk에 저장하기 때문에 읽기만 가능하다.

그렇기 때문에 read/write를 해야한다면 앱 폴더로 복사해서 사용하여야 한다.


다음은 Asset의 파일을 database 폴더로 복사하는 예제 코드이다.

public void copyDbFromAssets( Context _context ){
 File dbFile = _context.getDatabasePath( DB_NAME );

 if( dbFile == null )
  return;

 AssetManager assetManager = _context.getResources().getAssets();

 if( !dbFile.getParentFile().exists() )
  dbFile.getParentFile().mkdir();

 if( dbFile.exists() )
  dbFile.delete();

 try {
  dbFile.createNewFile();

  InputStream is = assetManager.open(DB_NAME, AssetManager.ACCESS_BUFFER);
  FileOutputStream fo = new FileOutputStream(dbFile);

  byte [] tempdata = new byte[2048];
  int readLen = 0;

  while( readLen != -1 ){
   readLen = is.read(tempdata);
   fo.write(tempdata);
  }

  is.close();
  fo.close();
 } catch (IOException e) {
  e.printStackTrace();
 }
}

댓글 없음:

댓글 쓰기