Android中資料儲存之SharedPreferences

qingyezhu發表於2014-11-22
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * SharedPreferences是一種輕型的資料儲存方式,它的本質是基於XML檔案儲存Key-Value鍵值對資料,<br/>
 * 通常用來儲存一些簡單的配置資訊。其儲存位置在/data/data/<包名>/shared_prefs目錄下。<br/>
 * SharedPreferences物件本身只能獲取資料而不支援儲存和修改,儲存修改是通過Editor物件實現。<br/>
 * SharedPreferences物件與SQLite資料庫相比,免去了建立資料庫、建立表、寫SQL語句等操作,更加易用。<br/>
 * 但是SharedPreferences僅支援以下資料型別:<br/>
 * boolean<br/>
 * int<br/>
 * float<br/>
 * long<br/>
 * String<br/>
 * 但是無法進行條件查詢等,所以不論SharedPreferences的資料儲存操作是如何簡單,<br/>
 * 它只能是儲存方式的一種補充,而無法完全替代如SQLite資料庫等其他資料儲存方式。<br/>
 * 
 * @author wangzhu
 * @date 2014年11月22日 上午10:17:49
 */
public class SharedPreferencesUtils {
    /**
     * 將內容寫入SharedPrefrences中
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param value
     *            值
     */
    public static void write(Context context, String fileName, String key,
            boolean value) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    /**
     * 讀取SharedPreferences中標記所對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param defValue
     *            預設值
     * @return
     */
    public static boolean readBoolean(Context context, String fileName,
            String key, boolean defValue) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        return preferences.getBoolean(key, defValue);
    }

    /**
     * 將內容寫入SharedPrefrences中
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param value
     *            值
     */
    public static void write(Context context, String fileName, String key,
            int value) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putInt(key, value);
        editor.commit();
    }

    /**
     * 讀取SharedPreferences中標記所對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param defValue
     *            預設值
     * @return
     */
    public static int readInt(Context context, String fileName, String key,
            int defValue) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        return preferences.getInt(key, defValue);
    }

    /**
     * 將內容寫入SharedPrefrences中
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param value
     *            值
     */
    public static void write(Context context, String fileName, String key,
            long value) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putLong(key, value);
        editor.commit();
    }

    /**
     * 讀取SharedPreferences中標記所對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param defValue
     *            預設值
     * @return
     */
    public static long readLong(Context context, String fileName, String key,
            long defValue) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        return preferences.getLong(key, defValue);
    }

    /**
     * 將內容寫入SharedPrefrences中
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param value
     *            值
     */
    public static void write(Context context, String fileName, String key,
            float value) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putFloat(key, value);
        editor.commit();
    }

    /**
     * 讀取SharedPreferences中標記所對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param defValue
     *            預設值
     * @return
     */
    public static float readFloat(Context context, String fileName, String key,
            float defValue) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        return preferences.getFloat(key, defValue);
    }

    /**
     * 將內容寫入SharedPrefrences中
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param value
     *            值
     */
    public static void write(Context context, String fileName, String key,
            String value) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.putString(key, value);
        editor.commit();
    }

    /**
     * 讀取SharedPreferences中標記所對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     * @param defValue
     *            預設值
     * @return
     */
    public static String readString(Context context, String fileName,
            String key, String defValue) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        return preferences.getString(key, defValue);
    }

    /**
     * 刪除SharedPreferences中Key對應的值
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     * @param key
     *            標記
     */
    public static void remove(Context context, String fileName, String key) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.remove(key);
        editor.commit();
    }

    /**
     * 清除SharedPreferences中對應檔案的所有內容
     * 
     * @param context
     *            上下文物件
     * @param fileName
     *            檔名
     */
    public static void clear(Context context, String fileName) {
        SharedPreferences preferences = context.getSharedPreferences(fileName,
                Context.MODE_PRIVATE);
        Editor editor = preferences.edit();
        editor.clear();
        editor.commit();
    }
}

 

相關文章