最近使用到了SharePreference保存数据,并删除的功能,我们知道SP保存的文件是存放在/data/data/包名/shared_prefs文件夹下
一般的我们可以这么做
1.创建文件,保存信息
SharedPreferences sp=getSharedPreferences("book",MODE_PRIVATE);
Editor editor=sp.edit();
editor.putFloat("price", (float) price);
editor.commit();
2.删除与清空文件信息
//清空文件数据
SharedPreferences sp=getSharedPreferences("book",MODE_PRIVATE);
if(sp!=null){
sp.edit().clear().commit();
}
//删除文件
File file= new File("/data/data/"+getPackageName().toString()+"/shared_prefs","book.xml");
if(file.exists())
{
file.delete();
Toast.makeText(TestActivity.this, "删除成功", Toast.LENGTH_LONG).show();
}
//创建的时候可以如下创建:
//以时间为单位保存sp名
SharedPreferences sp = BaseApplication.getContext().getSharedPreferences(TYPE_ALL,
Context.MODE_PRIVATE);
//sp文件管理类
public class ShareUtil { private static final String TAG = "ShareUtil"; //sp存放路径 private static final String pathUrl="/data/data/"+ BaseApplication.getContext().getPackageName().toString()+"/shared_prefs"; /** * 遍历获取所有的sp文件 返回的是一个 List<DateInfo> * @param Extension 扩展名, */ public static List<DateInfo> GetFiles(String Extension) { List<DateInfo> paths=new ArrayList<>(); File[] files = new File(pathUrl).listFiles(); File f; if(files == null) { LoggerUtil.i(TAG,pathUrl+"is Empty"); return null; } for (int i = 0; i < files.length; i++) { f = files[i]; if(!f.canRead()) { LoggerUtil.i(TAG,pathUrl+"can not read"); return null; } if (f.isFile()) { if (f.getName().contains(Extension)) //判断扩展名 { LoggerUtil.i(TAG,"f.getName()-->"+f.getName()); String fileName=f.getName().substring(0,f.getName().lastIndexOf(".")); DateInfo dateInfo=new DateInfo(); dateInfo.setDateId(Long.parseLong(fileName)); paths.add(dateInfo); } } } return (List<DateInfo>) SortList(paths,"getDateId","desc"); } /** * 关于list根据对象排序的问题 * @param list 要排序的那个list * @param getMethod 你要排序的那个属性的get方法(比如说userId:“getUserId”) * @param sort 你倒叙还是怎样(倒序:“desc” 顺序:null) * @param <E> * @return */ public static <E> E SortList(List<E> list, final String getMethod, final String sort) { Collections.sort(list, new Comparator<Object>() { @SuppressWarnings("unchecked") public int compare(Object a, Object b) { int ret = 0; try{ Method m1 = ((E)a).getClass().getMethod(getMethod, null); Method m2 = ((E)b).getClass().getMethod(getMethod, null); if(sort != null && "desc".equals(sort))//倒序 ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a), null).toString()); else//正序 ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString()); }catch(NoSuchMethodException ne){ System.out.println(ne); }catch(IllegalAccessException ie){ System.out.println(ie); }catch(InvocationTargetException it){ System.out.println(it); } return ret; } }); return (E) list; } /** * 遍历获取所有的sp文件 * @param path 文件目录 * @param Extension 扩展名 * @param IsIterative 是否进入子文件夹 * @return */ public static List<String> GetFiles(String path,String Extension, boolean IsIterative) { List<String> paths=new ArrayList<>(); File[] files = new File(path).listFiles(); File f; if(files == null) { LoggerUtil.i(TAG,path+"is Empty"); return null; } for (int i = 0; i < files.length; i++) { f = files[i]; if(!f.canRead()) { LoggerUtil.i(TAG,path+"can not read"); return null; } if (f.isFile()) { if (f.getName().contains(Extension)) //判断扩展名 { LoggerUtil.i(TAG,"f.getName()-->"+f.getName()); String fileName=f.getName().substring(0,f.getName().lastIndexOf(".")); paths.add(fileName); } } else if (f.isDirectory()) GetFiles(f.getPath(), Extension, IsIterative); } return paths; } /** * 清空与删除sp文件 * @param deleteFileName sp文件名 */ public static boolean deleteFile(String deleteFileName) { //清空文件 SharedPreferences sp=BaseApplication.getContext().getSharedPreferences(deleteFileName,Context.MODE_PRIVATE); if(sp!=null) { sp.edit().clear().commit(); } //删除文件 File file= new File(pathUrl,deleteFileName+".xml"); if(file.exists()) { return file.delete(); } return false; } }