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); } }