오늘은 안드로이드 앱 개발 시 내부저장소 경로를 다룰 때 자주 사용하는 메서드를 정리하려고 한다.
- 앱의 DB 경로
경로 : /data/data/[Package name]/databases
메서드 : ContextWrapper.getDatabasePath(String)
설명 : 아규먼트로 openOrCreateDatabase 메서드를 사용할 때 입력했던 DB파일의 이름을 전달하면 DB파일이 저장된 절대 경로를 리턴한다. 아규먼트로 전달하는 문자열의 길이가 0만 아니면 해당 문자열 이름의 파일이 없어도 DB파일이 저장되는 절대 경로 뒤에 붙어서 리턴된다. 아규먼트의 길이가 0이면 StringIndexOutOfBoundsException이 발생한다.
- 앱의 File 경로
경로 : /data/data/[Package name]/files
메서드 : ContextWrapper.getFilesDir()
설명 : openFileOutput 메서드를 통해 저장된 파일의 절대 경로를 리턴한다.
- 앱의 Cache 경로
경로 : /data/data/[Package name]/cache
메서드 : ContextWrapper.getCacheDir()
설명 : 앱의 캐시를 저장하는 절대 경로를 리턴한다. 이 디렉토리의 파일들은 안드로이드 시스템이 자동으로 삭제해준다.
공식 문서에서는 내부저장소의 최상단 디렉토리의 경로인 ContextWrapper.getDataDir()의 경로부터 직접 사용하지 말고 위의 Storage API처럼 저장소를 리턴해주는 메서드를 사용할 것을 권장하고 있다.