Android常用辅助类(三)——存储相关
来源:互联网 发布:pmp网络课程 编辑:程序博客网 时间:2024/06/05 17:50
1、SD卡的操作
import java.io.File;import android.os.Environment;import android.os.StatFs;//SD卡相关的辅助类public class SDCardUtils{private SDCardUtils(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}/** * 判断SDCard是否可用 * * @return */public static boolean isSDCardEnable(){return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);}/** * 获取SD卡路径 * * @return */public static String getSDCardPath(){return Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator;}/** * 获取SD卡的剩余容量 单位byte * * @return */public static long getSDCardAllSize(){if (isSDCardEnable()){StatFs stat = new StatFs(getSDCardPath());// 获取空闲的数据块的数量long availableBlocks = (long) stat.getAvailableBlocks() - 4;// 获取单个数据块的大小(byte)long freeBlocks = stat.getAvailableBlocks();return freeBlocks * availableBlocks;}return 0;}/** * 获取指定路径所在空间的剩余可用容量字节数,单位byte * * @param filePath * @return 容量字节 SDCard可用空间,内部存储可用空间 */public static long getFreeBytes(String filePath){// 如果是sd卡的下的路径,则获取sd卡可用容量if (filePath.startsWith(getSDCardPath())){filePath = getSDCardPath();} else{// 如果是内部存储的路径,则获取内存存储的可用容量filePath = Environment.getDataDirectory().getAbsolutePath();}StatFs stat = new StatFs(filePath);long availableBlocks = (long) stat.getAvailableBlocks() - 4;return stat.getBlockSize() * availableBlocks;}/** * 获取系统存储路径 * * @return */public static String getRootDirectoryPath(){return Environment.getRootDirectory().getAbsolutePath();}}
2、SharedPreferences
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;public class SPUtils{public SPUtils(){/* cannot be instantiated */throw new UnsupportedOperationException("cannot be instantiated");}/** * 保存在手机里面的文件名 */public static final String FILE_NAME = "share_data";/** * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 * * @param context * @param key * @param object */public static void put(Context context, String key, Object object){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();if (object instanceof String){editor.putString(key, (String) object);} else if (object instanceof Integer){editor.putInt(key, (Integer) object);} else if (object instanceof Boolean){editor.putBoolean(key, (Boolean) object);} else if (object instanceof Float){editor.putFloat(key, (Float) object);} else if (object instanceof Long){editor.putLong(key, (Long) object);} else{editor.putString(key, object.toString());}SharedPreferencesCompat.apply(editor);}/** * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 * * @param context * @param key * @param defaultObject * @return */public static Object get(Context context, String key, Object defaultObject){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);if (defaultObject instanceof String){return sp.getString(key, (String) defaultObject);} else if (defaultObject instanceof Integer){return sp.getInt(key, (Integer) defaultObject);} else if (defaultObject instanceof Boolean){return sp.getBoolean(key, (Boolean) defaultObject);} else if (defaultObject instanceof Float){return sp.getFloat(key, (Float) defaultObject);} else if (defaultObject instanceof Long){return sp.getLong(key, (Long) defaultObject);}return null;}/** * 移除某个key值已经对应的值 * * @param context * @param key */public static void remove(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.remove(key);SharedPreferencesCompat.apply(editor);}/** * 清除所有数据 * * @param context */public static void clear(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.clear();SharedPreferencesCompat.apply(editor);}/** * 查询某个key是否已经存在 * * @param context * @param key * @return */public static boolean contains(Context context, String key){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);return sp.contains(key);}/** * 返回所有的键值对 * * @param context * @return */public static Map<String, ?> getAll(Context context){SharedPreferences sp = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);return sp.getAll();}/** * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类 * * @author zhy * */private static class SharedPreferencesCompat{private static final Method sApplyMethod = findApplyMethod();/** * 反射查找apply的方法 * * @return */@SuppressWarnings({ "unchecked", "rawtypes" })private static Method findApplyMethod(){try{Class clz = SharedPreferences.Editor.class;return clz.getMethod("apply");} catch (NoSuchMethodException e){}return null;}/** * 如果找到则使用apply执行,否则使用commit * * @param editor */public static void apply(SharedPreferences.Editor editor){try{if (sApplyMethod != null){sApplyMethod.invoke(editor);return;}} catch (IllegalArgumentException e){} catch (IllegalAccessException e){} catch (InvocationTargetException e){}editor.commit();}}}
0 0
- Android常用辅助类(三)——存储相关
- Android常用辅助类(二)——设备相关
- android 常用相关辅助类
- Anroid常用的辅助类(一)——网络相关
- Android常用辅助类之单位转换的辅助类
- android获得屏幕相关的辅助类
- Android屏幕相关辅助类 ScreenUtils
- android跟App相关的辅助类
- Android常用辅助类(四)——屏幕、图片及其他
- Android 常用辅助函数
- Android——Linkify辅助类
- 屏幕相关辅助类
- App相关辅助类
- Android学习三 数据存储相关
- Android工具类之App相关辅助类
- Android工具类之网络相关辅助类
- Android工具类之屏幕相关辅助类
- Android工具类--App相关的辅助类
- UVa116
- CloudStack 故障排查汇总-不定期更新
- LintCode : 搜索旋转排序数组
- Java学习——String变量中的双胞胎
- TimeDateStamp中GMT秒数转化为实际时间
- Android常用辅助类(三)——存储相关
- 在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”的解决方案
- c++迭代器总结
- 【PHP】PHP MySQL问题 phpinfo() 没有显示MySQL模块
- PyCharm 配置&&操作
- View的事件分发机制——简单明了
- [Xcode使用] 自定义代码块引用
- 单点更新区间求和贴海报问题 hdu2795 billbord
- hdoj 2243 考研路茫茫——单词情结 【AC自动机 + 构造矩阵】