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();
}
}