본문 바로가기

Study/Programming

안드로이드 데이터 스토리지 - 꼬로미

홧팅2홧팅2


안녕하세요 꼬로미입니다


안드로이드 프로그래밍 데이터 스토리지에 대한 포스팅입니다




데이터 저장 방법

                                                                                                  



애플리케이션에서 데이터를 저장할 다양한 상황이 있으며 그에 따른 여러가지 방법이 있습니다

예로 연락처 저장 같은 것이 있으며 데이터의 크기, 어떤 어플리케이션을 사용하는지에 따라 달라지게 됩니다


  • 공유 프레퍼런스(Shared Preferences)
    키-값 쌍(key-value pair)으로 사적이고 기초적인 데이터를 저장

  • 내부 저장(Internal Storage)
    사적인 데이터를 장치 메모리에 저장

  • 외부 저장(External Strorage)
    공유 데이터를 공유 외부 저장소에 저장

  • SQLite 데이터베이스(SQLite Databases)
    구조화된 데이터를 사적이 ㄴ데이터베이스에 저장

  • 네트워크 연결(Network Connection)
    데이터를 네트워크서버를 사용해 웹에 저장





공유 프레퍼런스(Shared Preferences)

                                                                                                  



기초적인 자료형을 키-값 쌍으로 저장하고 복원하는 방법

  • 부울형, 실수형, 정수형, 문자열과 같은 기초 자료형들을 저장

  • 저장된 데이터는 사용자 애플리케이션이 종료되어도 저장

  • 여러개의 액티비티들이 프레퍼런스를 공유


공유 프레퍼런스를 얻기 위한 메소드 2가지

  • getSharedPrefereces(name, mod) : 여러개의 프레퍼런스 파일필요시 사용

  • getPreferences(mode) : 하나의 프레퍼런스 파일만 필요시 사용, 액티비티마다 하나만 존재(이름필요x)


프레퍼런스 파일에서 값을 읽을때 사용하는 메소드

  • getBoolean(String key, boolean defValue)

  • getInt(String key, int defValue)

  • getString(String key, String defValue)


프레퍼런스 파일에서 값을 쓸때 Editor객체의 메소드

  • putBoolean(String key, boolean value)

  • putInt(String key, int value)

  • putString(String key, String value)






프레퍼런스 액티비티

                                                                                                  



안드로이드에서 사용자 환경을 설정하기 위해 제공하는 자동화된 액티비티 프레임워크입니다

이는 공유 프레퍼런스를 사용해 자동적으로 사용자 환경이 저장되게 합니다





내부 공간에 파일 만들기

                                                                                                  



애플리케이션은 장치의 내부 저장 공안에 파일을 저장할 수 있습니다

내부 저장 공간에 저장되는 파일은 해당 애플리케이션만 접근이 가능하며 다른 애플리케이션은 접근이 불가능합니다


파일쓰기 예

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);

fos.write(string.getBytes());

fos.close();

  • openFileOutput(String name, int mode)
    name : 오픈하고자 하는 파일 이름
    mode : 파일모드 상수 중 하나
        MODE_PRIVATE : 사적인 파일
        MODE_APPEND : 파일의 끝에 추가
        MODE_WORLD_READABLE : 다른 애플리케이션이 읽을 수 있음
        MODE_WORLD_WRITEABLE : 다른 애플리케이션이 쓸 수 있음


파일읽기

FileInputStream fis = openFileInput(FILENAME);

byte[] buffer = new byte[1110];

while(fis.read(buffer)!= -1){ }

fis.close();



유용한 메소드들

  • getFilesDir() - 내부 파일들이 저장될 떄 파일 시스템 디렉토리의 절대 경로를 반환

  • getDir() - 내부 스토리지 공간에 디렉토리를 생성하거나 오픈

  • deleteFile() - 내부 스토리지 공간에 저장된 파일을 삭제

  • fileList() - 애플리케이션이 현재 저장한 파일 리스트를 반환




외부 저장 공간

                                                                                                  



외부 저장 공간은 보통 착탈이 가능한 SD카드를 말합니다

안드로이드는 이 SD카드에도 파일을 저장할 수 있으며 누구나 읽을 수 있고 사용자에 의하여 변경이 될 수 있습니다


외부 저장 공간 사용 가능 검사

getExternalStorageState() : 외부 미디어가 있는지 체크


외부 저장 공간에서 파일 사용하기

getExternalFilesDir()으로 외부 저장 공간 디렉토리 절대경로를 얻을 수 있음


매니페스트에 권한 설정

<uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" />


공유되는 파일 저장하기
애플리케이션 제거 후에도 삭제되어서 안되는 파일이라면 공용 디렉토리에 저장이 되어야 하며
이 디렉토리는 외부 저장 공간의 루트에 위치합니다
getExternalStoragePublicDirectory()로 공용 디렉토리 얻음 (API 레벨 8이상)

캐시 파일 저장하기
캐시 파일 또한 외부 저장공간에 저장이 가능
getExternalCacheDir()으로 캐시 파일들을 저장할 외부 저장 공간 디렉토리를 구할 수 있음(API 레벨 8이상)



??메롱하트3

읽어주셔서 감사드리며

뷰업 한번 부탁드려요~