블로그 여기저기 찾아 다니다가 어느분께서 잘~ 정리해 놓으셨길래...퍼왔음...

출처는 여기 : http://bspfp.pe.kr/376


본문내용

======================================================================================================

BS가 간단한 어플리케이션을 만들고 있는데요.
설정 파일이나, 커스터마이징 파일등을 어디에 저장할지 몰라 좀 찾아 봤습니다.

안드로이드를 사용하는 스마트폰, 태블릿 등을 보면 아이폰과 달리 파티션이 나뉘어 있는데요.
내부 저장소와 외부 저장소로 나뉘어 있고 내부 저장소에는 어플리케이션과 데이터 일부가 저장되고
외부 저장소에는 데이터가 저장되도록 되어 있습니다.
물론 어플리케이션 개발자가 내부 저장소에 모두 저장하게 만든다면... 내부 저장소 공간을 홀랑 쓰게 되겠지만요.
(H/W에 따라서 두 개의 저장소 이외에 SD카드나 외장 USB 드라이브를 지원하기도 합니다.)

내부 저장소는 각 어플리케이션의 private 영역이 존재하고 외부 저장소에는 private 영역도 있고, public 영역도 있습니다.

어플리케이션을 삭제하게 되면 private 영역만 같이 삭제가 되고 public 영역은 여전히 남게 됩니다.
어플리케이션 작성시 이 점을 반드시 유의하여 유저의 데이터가 프로그램 제거시 삭제되지 않게 하고
어플리케이션의 데이터가 삭제시에 남지 않도록 해야 합니다.


문제는 이러한 경로가 현재 시스템에서 어디에 있는가? 입니다.
private 영역에 관한 API는 Context의 메서드로 되어 있고 Activity가 Context를 상속하므로 여기서 가져다 쓰면 됩니다.
public 영역에 관한 API는 Environment의 정적 메서드로 되어 있습니다.
각 경로를 구하는 API가 존재하므로 하나씩 살펴보겠습니다.

  1. 내부 저장소
     
    • 캐시 영역
      File Context.getCacheDir()
      캐시 경로를 반환합니다.
      경로: /data/data/<package name>/cache예: /data/data/bspfp.myfirstapp/cache
       
    • 데이터베이스 파일
      File Context.getDatabasePath(String name)
      name 이름의 데이터베이스 경로를 반환합니다.
      경로: /data/data/<package name>/databases예: /data/data/bspfp.myfirstapp/databases
       
    • 일반 파일 저장 영역
      File Context.getFilesDir()
      어플리케이션에서 사용하는 일반 파일들을 저장하는 경로를 반환합니다.
      경로: /data/data/<package name>/files
      예: /data/data/bspfp.myfirstapp/files
      결과값을 디렉토리가 아닌 특정 파일을 원할 경우에는 아래 API를 사용하면 됩니다.
      File Context.getFileStreamPath(String name)
       
  2. 외부 저장소
     
    • 최상위 경로
      static File Environment.getExternalStorageDirectory()
      외부 저장소 경로를 반환합니다.
      경로: /mnt/sdcard
       
    • public 디렉토리 경로
      static File Environment.getExternalStoragePublicDirectory(String type)
      type에 따른 public 디렉토리 경로를 반환합니다.
      type은 Environment 클래스의 static 필드로 명시되어 있습니다.
      하지만 시스템에 따라 해당 경로가 없을 수도 있습니다.
      경로를 새로 생성하고자 할 경우에는 File.mkdirs() API를 사용하시면 편리합니다.
      필드이름설명경로
      DIRECTORY_ALARMS알람용 오디오 파일/mnt/sdcard/Alarms
      DIRECTORY_DCIM카메라로 촬영한 사진/mnt/sdcard/DCIM
      DIRECTORY_DOWNLOADS다운로드한 파일/mnt/sdcard/Download
      DIRECTORY_MOVIES동영상 파일/mnt/sdcard/Movies
      DIRECTORY_MUSIC음악 파일/mnt/sdcard/Music
      DIRECTORY_NOTIFICATIONS알림음 오디오 파일/mnt/sdcard/Notifications
      DIRECTORY_PICTURES그림/스샷 파일/mnt/sdcard/Pictures
      DIRECTORY_PODCASTS팟캐스트 파일/mnt/sdcard/Podcasts
      DIRECTORY_RINGTONES벨소리 파일/mnt/sdcard/Ringtones
       
    • 어플리케이션 private 데이터 저장 경로
      File Context.getExternalFilesDir(String type)
      type에 따른 어플리케이션 private 디렉토리 경로를 반환합니다.
      type은 Environment에 정의되어 있는 것을 사용합니다.
      필드이름설명경로
      DIRECTORY_ALARMS알람용 오디오 파일/mnt/sdcard/Android/data/<package name>/files/Alarms
      DIRECTORY_MOVIES동영상 파일/mnt/sdcard/Android/data/<package name>/files/Movies
      DIRECTORY_MUSIC음악 파일/mnt/sdcard/Android/data/<package name>/files/Music
      DIRECTORY_NOTIFICATIONS알림음 오디오 파일/mnt/sdcard/Android/data/<package name>/files/Notifications
      DIRECTORY_PICTURES그림/스샷 파일/mnt/sdcard/Android/data/<package name>/files/Pictures
      DIRECTORY_PODCASTS팟캐스트 파일/mnt/sdcard/Android/data/<package name>/files/Podcasts
      DIRECTORY_RINGTONES벨소리 파일/mnt/sdcard/Android/data/<package name>/files/Ringtones
      null상위 경로/mnt/sdcard/Android/data/<package name>/files
       
    • 외부 캐시 영역
      File Context.getExternalCacheDir()
      외부 저장소의 캐시 디렉토리를 반환합니다.
      경로: /data/data/<package name>/cache
      예: /data/data/bspfp.myfirstapp/cache


복사했습니다!