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

最近使用到了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
     * @param Extension 扩展名,
     */
    public static List GetFiles(String Extension)
    {
        List 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) SortList(paths,"getDateId","desc");
    }
    /**
     * 关于list根据对象排序的问题
     * @param list  要排序的那个list
     * @param getMethod  你要排序的那个属性的get方法(比如说userId:“getUserId”)
     * @param sort 你倒叙还是怎样(倒序:“desc”   顺序:null)
     * @param 
     * @return
     */
    public static  <E> E SortList(List<E> list, final String getMethod, final String sort) {
        Collections.sort(list, new Comparator() {
            @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 GetFiles(String path,String Extension, boolean IsIterative)
    {
        List 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;
    }
}
 
   
  

你可能感兴趣的:(SharePrefer,File下载,数据库的数据保存与读取)