当前位置: 首页 > news >正文

android 文件存储SharedPreferences

 

一、文件存储

文件存储主要是I/O流的操作,没什么好说的,需要注意的是保存文件的各个目录。

下面为常用的目录:

    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的卸载而删除。

File getFilesDir()  //  /data/data/(packagename)/files

FileOutputStream openFileOutput(String name, int mode)

boolean deleteFile(String name)

String[] fileList()

上面的几个方法都是对目录/data/data/(packagename)/files的操作。


 

二、SharedPreferences

SharedPreferences适用于保存轻量级的数据,如配置文件。

SharedPreferences文件保存在/data/data/(packagename)/shared_prefs目录下,为xml格式的文件。

获取SharedPreferences:

SharedPreferences getPreferences(int mode)  //m1

SharedPreferences getSharedPreferences(String name, int mode)  //m2

可以通过上面两个方法获取SharePreferences,m1的文件名为调用此方法的类名,m2自己设置文件名。

 

保存数据:

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

}

 

转载于:https://www.cnblogs.com/zhisuoyu/p/5248663.html

相关文章:

  • Java中Cloneable 和 clone()的总结和使用
  • Java并发编程之ConcurrentHashMap原理分析
  • Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of
  • 创建表--自动编号字段且自增
  • No plugin found for prefix 'jetty' in the current project and in the plugin groups [org.apache.mave
  • 关于static函数在类中的定义和使用
  • IDEA下使用Jetty进行Debug模式调试
  • SQL SERVER普通用户需要什么权限才能执行sp_configure命令
  • Ajax异步方式实现登录与参数的校验
  • xcode 不显示占用内存
  • TCP的三次握手(建立连接)和四次挥手(关闭连接)详解
  • explode 把字符串打散为数组
  • 面试精选逻辑推理题总结
  • 并发控制中的乐观锁与悲观锁
  • LinkedList基本用法
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【Leetcode】104. 二叉树的最大深度
  • 08.Android之View事件问题
  • go语言学习初探(一)
  • Hexo+码云+git快速搭建免费的静态Blog
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java|序列化异常StreamCorruptedException的解决方法
  • java8-模拟hadoop
  • Laravel Mix运行时关于es2015报错解决方案
  • MobX
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PHP的Ev教程三(Periodic watcher)
  • Redux 中间件分析
  • REST架构的思考
  • vue中实现单选
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 开源SQL-on-Hadoop系统一览
  • 离散点最小(凸)包围边界查找
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 设计模式走一遍---观察者模式
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Nginx实现动静分离
  • python最赚钱的4个方向,你最心动的是哪个?
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • #pragma once
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (13):Silverlight 2 数据与通信之WebRequest
  • (7)STL算法之交换赋值
  • (Java数据结构)ArrayList
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (九十四)函数和二维数组
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (算法)求1到1亿间的质数或素数
  • (一)Neo4j下载安装以及初次使用
  • (转)nsfocus-绿盟科技笔试题目
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET BackgroundWorker
  • .Net7 环境安装配置