安卓学习笔记---如何保存数据到SharePreference里面,获取所有sp文件以及删除文件

来源:互联网 发布:软件开发合作协议 编辑:程序博客网 时间:2024/05/21 22:27

最近使用到了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();
                  }

        

后来自己封装了一下,实现了获取shared_prefs文件下的所有文件,返回所有的文件名,也可进行删除某个文件的功能


//创建的时候可以如下创建:

//以时间为单位保存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;    }}

0 0
原创粉丝点击