본문 바로가기

JAVA/Android

[JAVA][Android] SharedPreferences를 이용하여 XML파일 작성,읽기,수정(삭제)

파일에 글을 작성하거나 로컬DB에 값을 저장하는 등의 작업은 생각보다 빈번하게 일어난다.

이번 포스팅에서는 SharedPreferences 인터페이스를 이용하여 xml 파일에 글을 작성하는 방법에 대해 정리하겠다.

 

https://developer.android.com/reference/android/content/SharedPreferences

 

SharedPreferences  |  Android Developers

 

developer.android.com

 

보기 편하게 작업 종류로 메소드를 나누어 작성하였다.

 

첫번째는 XML파일을 생성하여 내용을 작성하는 방법이다.

private void writePref(int content){
    SharedPreferences preferences = context.getSharedPreferences("name", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();

    editor.putString("key_string","value");
    editor.putInt("key_int",content);
    editor.putBoolean("key_bool",true);
    editor.putFloat("key_float",1);
    editor.putLong("key_long",1);
    editor.putStringSet("key_string_set", new Set<String>() {...생략...});

    editor.commit();
}

우선 context.getSharedPreferences 를 통해 객체를 생성한다.

 

첫번째 매개변수에는 작성할 xml 파일 이름을 삽입하고

두번째 매개변수에는 파일에 관한 권한을 명시하는 상수로 Context.MODE_PRIVATE를 삽입했다.

MODE_PRIVATE 자신의 앱 내에서만 사용이 가능하며,
외부에서 접근이 불가합니다.
MODE_WORLD_READABLE 외부 앱에서 읽을 수 있습니다. (deprecated)
MODE_WORLD_WRITEABLE 외부 앱에서 쓸 수 있습니다. (deprecated)

 

내용을 작성하기 위해 SharedPreferences 객체로부터 Editor 객체를 생성했다.

작성할 수 있는 데이터 타입은 String, StringSet, Int, Boolean, Float, Long 타입이 있다.

put 메소드에 key값과 value값을 작성한 뒤, editor.commit()을 해주면 저장된다.

저장 경로 : data/data/패키지명/shared_prefs/SharedPreference

 

두번째는 PreferenceManager 객체를 이용한 SharedPreferences 객체 생성 방법이다.

private void writePrefDefault(int content){
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();

    editor.putString("key_string","value");
    editor.putInt("key_int",content);
    editor.putBoolean("key_bool",true);
    editor.putFloat("key_float",1);
    editor.putLong("key_long",1);
    editor.putStringSet("key_string_set", new Set<String>() {...});

    editor.commit();
}

PreferenceManager.getDefaultSharedPreferences(this)를 이용하면

파일명을 명시할 필요가 없고, 현재 앱의 패키지명을 파일명으로 하여 생성한다.

경로 : 패키지명과 동일

 

세번째는 객체를 읽어오는 방법이다.

private void readPref(){
    SharedPreferences preferences = context.getSharedPreferences("name", Context.MODE_PRIVATE);
    String valueString = preferences.getString("key_string","default");
}

 

동일한 파일명으로 SharedPreferences 객체를 생성한 뒤

getString 등의 메소드를 이용하여 읽어온다.

첫번째 매개변수에는 읽어올 key값을, 두번째 매개변수에는 default값으로 사용할 값을 삽입한다.

 

마지막으로 값을 삭제하는 방법이다.

private void deletePref(){
    SharedPreferences preferences = context.getSharedPreferences("name", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.remove("key_string");
    editor.commit();
}

동일하게 객체를 생성하고, Editor 객체도 생성한다.

그 후 editor.remove 메소드 매개변수에 삭제할 key값을 작성하면 해당 데이터가 삭제된다.

저장을 위해 commit()까지 작성해주면 된다.