android 文件存儲&SharedPreferences

 

1、文件存儲app

文件存儲主要是I/O流的操做,沒什麼好說的,須要注意的是保存文件的各個目錄。工具

下面爲經常使用的目錄:spa

    public static File getInFileDir(Context context) {
        return context.getFilesDir(); // /data/data/packagename/files
    }

    public static File getInCacheDir(Context context) {
        return context.getCacheDir();// /data/data/packagename/cache
    }

    public static File getExRootDir() {
        return Environment.getExternalStorageDirectory();// /storage/sdcard0
    }

    public static File getExPrivateDir(Context context, String type) {
        return context.getExternalFilesDir(type); // /storage/sdcard0/Android/data/packagename/files/{type}
    }

    public static File getExPublicDir(String type) {
        return Environment.getExternalStoragePublicDirectory(type); // /storage/sdcard0/{type}
    }

    public static File getExCacheDir(Context context) {
        return context.getExternalCacheDir(); ///storage/sdcard0/Android/data/packagename/cache
    }

其中,除了getExRootDir()和getExPublicDir()兩個目錄,其他的目錄中的數據都會隨app的卸載而刪除。code

File getFilesDir()  //  /data/data/(packagename)/files

FileOutputStream openFileOutput(String name, int mode)

boolean deleteFile(String name)

String[] fileList()

上面的幾個方法都是對目錄/data/data/(packagename)/files的操做。xml


 

2、SharedPreferencesblog

SharedPreferences適用於保存輕量級的數據,如配置文件。rem

SharedPreferences文件保存在/data/data/(packagename)/shared_prefs目錄下,爲xml格式的文件。get

獲取SharedPreferences:it

SharedPreferences getPreferences(int mode)  //m1

SharedPreferences getSharedPreferences(String name, int mode)  //m2

能夠經過上面兩個方法獲取SharePreferences,m1的文件名爲調用此方法的類名,m2本身設置文件名。class

 

保存數據:

        SharedPreferences sp = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("name", "mao");
        editor.apply();

獲取數據:

       String name = sp.getString("name", "");

 

下面是一個簡單的工具類:

public class SPUtils {

    @SuppressWarnings("unchecked")
    public static void put(Context context, String filename, String key, Object obj) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        if (obj instanceof Boolean) {
            editor.putBoolean(key, (Boolean) obj);
        } else if (obj instanceof Float) {
            editor.putFloat(key, (Float) obj);
        } else if (obj instanceof Integer) {
            editor.putInt(key, (Integer) obj);
        } else if (obj instanceof Long) {
            editor.putLong(key, (Long) obj);
        } else if (obj instanceof String) {
            editor.putString(key, (String) obj);
        } else if (obj instanceof Set) {
            editor.putStringSet(key, (Set<String>) obj);
        }
        editor.apply();

    }

    @SuppressWarnings("unchecked")
    public static Object get(Context context, String filename, String key, Object defaultObj) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        if (defaultObj instanceof Boolean) {
            return sp.getBoolean(key, (Boolean) defaultObj);
        } else if (defaultObj instanceof Float) {
            return sp.getFloat(key, (Float) defaultObj);
        } else if (defaultObj instanceof Integer) {
            return sp.getInt(key, (Integer) defaultObj);
        } else if (defaultObj instanceof Long) {
            return sp.getLong(key, (Long) defaultObj);
        } else if (defaultObj instanceof String) {
            return sp.getString(key, (String) defaultObj);
        }else if(defaultObj instanceof Set){
            return sp.getStringSet(key, (Set<String>) defaultObj);
        }
        return null;
    }

    public static void remove(Context context, String filename, String key) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.remove(key);
        editor.apply();
    }


    public static Map<String, ?> getAll(Context context, String filename) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        Map<String, ?> map = sp.getAll();
        return map;
    }

    public static void clear(Context context, String filename) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.clear();
        editor.apply();
    }


    public static boolean contains(Context context, String filename, String key) {
        SharedPreferences sp = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        return sp.contains(key);
    }

}
相關文章
相關標籤/搜索