Android

[Android] 내부저장소 & 외부저장소

an-hayyy 2021. 3. 8. 17:08

내부저장소

해당 앱에서만 접근 가능, 각 애플리케이션에서만 데이터를 읽고 쓸 수 있음, 보안을 위해서는 외부 어플이 접근할 수 없도록 내부 저장소에 저장하는 것이 안전

- 캐시(Cache)

임시 파일들이 저장. File Context.getCacheDir() 내부 저장소의 캐시 디렉터리 경로를 반환한다. 경로: /data/data/패키지 이름/cache

- 데이터베이스(Database)

데이터베이스 파일들이 저장된다. File Context.getDatabasePath(String name) 데이터베이스 파일의 경로를 반환. 인자로 데이터베이스 파일의 이름을 넘겨준다. 경로: /data/data/패키지 이름/databases

- 일반 파일

일반 파일이 저장되는 영역이다. 

이 경로는 Context.openFileOutput(String, int)를 사용하여 생성되는 파일이 저장되는 경로와 동일하다. File Context.getFilesDir() 일반 파일들의 저장 경로를 반환한다. 경로: /data/data/패키지 이름/files

각 일반 파일들의 경로를 가져오기 File Context.getFileStreamPath(String name) 일반 파일이 저장된 공간에서 특정 이름을 가지는 파일의 경로를 반환한다. 인자로 확장자를 포함한 파일 이름을 넘겨준다. 경로: /data/data/패키지 이름/files/파일이름

 

외부저장소 (공용영역)

다양한 어플이 접근할 수 있는 영역이며 어플이 삭제되어도 이 경로에 저장된 데이터는 유지

- 최상위 경로

외부 저장소(SD카드)의 최상위 경로를 반환. static File Environment.getExternalStorageDirectory() 경로: /mnt/sdcard 또는 /storage/emulated/0 등 기종마다 다르다.   

- 특정 데이터를 저장하는 영역

여러 애플리케이션에서 공용으로 사용할 수 있는 데이터들을 저장하며 데이터의 유형에 따라 별도의 디렉터리를 사용한다. 이 영역에 데이터를 저장하기 전에, 해당 디렉터리가 존재하는지 확인해야 한다. 존재하지 않으면 FileNotFoundException이 발생하기 때문에 File.mkdirs()를 사용하여 없을 경우 새 디렉터리를 생성해 준다.  다음의 함수를 이용해서 external 디렉터리가 존재하는지, 그리고 write가 가능한지 확인할 수 있다.

 

외부저장소 (고유영역)

애플리케이션 고유 영역 이 영역에 저장된 데이터는 애플리케이션이 삭제될 때 같이 삭제되며 다른 애플리케이션에서 해당 데이터에 접근하는 것이 가능

- 특정 데이터를 저장하는 영역

애플리케이션 고유 영역에도 공용 영역과 마찬가지로 각 데이터 유형별로 데이터를 저장하는 표준 디렉터리를 제공한다. File Context.getExternalFilesDir(String type) 인자로 디렉터리의 유형을 넘겨준다.

- 캐시 데이터를 저장하는 영역

애플리케이션에서 사용하는 임시 데이터를 외부 저장소에 저장. File Context.getExternalCacheDir() 경로: /mnt/sdcard/Android/data/패키지 이름/cache

 

 

참고 : egloos.zum.com/pavecho/v/7204359

'Android' 카테고리의 다른 글

[Android] setDisplayWindow()  (0) 2021.03.10
[Android] Context  (0) 2021.03.09
[Android] ACC를 활용한 MVVM패턴  (0) 2021.03.03
[Android] 비동기 처리(AsyncTask)  (0) 2021.03.02
[Android] WebView  (0) 2021.02.26