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);
}
}
android 文件存储&SharedPreferences的更多相关文章
- Android 文件存储浅析
最近做的一个需求和文件存储有关系.由于之前没有系统梳理过,对文件存储方面的知识一直很懵懂.趁着周末有时间,赶紧梳理一波. 这首从网上找到的一张图,很好的概括了外部存储和内部存储. 下面我们再来具体介绍 ...
- 4、Android-数据存储方案(文件存储/SharedPreferences)
简介: 任何一个应用程序都需要和数据进行交互 对于软件来说微博.QQ等都需要关系的是数据 没有数据的应用程序是一个没有灵魂的软件 而且还没有实际的用途 可以认为是单机 4.1.持久化技术的简介 数据持 ...
- Android文件存储
文件存储是Android中最基本的一种数据存储方式,它不读存储的内容进行任何的格式化处理,所有数据原封不动的保存在文件之中.如果想用文件存储的方式保存一些较为复杂的数据,就需要定义一套自己的格式规范, ...
- android: 文件存储
数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑 关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在 存储设备中的数据是处于持久状态的,持久化 ...
- android文件存储位置切换
最近有个需求,助手的google卫星地图和OpenCycleMap下载的离线地图数据,要能够在内置存储和外置存储空间之间切换,因为离线瓦片数据非常大,很多户外用户希望将这些文件存储在外置TF卡上,不占 ...
- 转:Android文件存储路径getFilesDir()与getExternalFilesDir的区别
作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard = Environment.getExternalStorageDirectory(); 获取S ...
- android本地存储SharedPreferences
SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...
- 程序员带你学习安卓开发系列-Android文件存储
这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...
- Android文件存储使用参考
可能遇到的问题 android系统自身自带有存储,另外也可以通过sd卡来扩充存储空间.前者好比pc中的硬盘,后者好移动硬盘. 前者空间较小,后者空间大,但后者不一定可用. 开发应用,处理本地数据存取时 ...
随机推荐
- MySQL入门(1)——基础操作
MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...
- C 语言代码风格之 Linux 内核代码风格
GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 华为云社区:https://bbs.huaweicloud.com/b ...
- Logback简介及配置文件logback.xml详解
logback简介及配置文件说明 @author:wangyq @date:2021年3月31日 logback简介 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: htt ...
- Starting Tomcat v9.0 Server at localhost' has encountered a problem
•问题描述 在通过 Eclipse 打开 Tomcat 时报错: •解决方案 找到 Tomcat 的安装位置,打开 tomcat\bin 目录,找到 shutdown.bat,手动关闭 tomcat: ...
- 文件查找工具 find 详解(附:生产示例)
1. 文件查找:在文件系统上查找符合条件的文件 命令 解释 which 查看可执行文件的位置,只能寻找执行文件,并在PATH变量里面寻找 whereis 查看文件的位置:只能查二进制文件,说明文档,源 ...
- [Azure Devops] 获取单元测试的代码覆盖率
1. 获取代码覆盖率 上一篇文章里,我们在 Pipeline 中插入一个单元测试并把所有单元测试都通过作为 Pipeline 通过的硬性要求.除此以外,我们还可以获取单元测试的代码覆盖率,用作衡量代码 ...
- 【Java】流、IO(初步)
(这部分比较抽象且写的不是很好,可能还要再编辑) [概述] 流:流是一系列数据,包括输入流和输出流.你可以想象成黑客帝国的"代码雨",只要我们输入指令,这些数据就像水一样流进流出了 ...
- 【1.0 Regular Expressions 正则表达式】
[概念] RegEx 正则表达式是一种特殊的字符序列,可帮助您使用专门的模板语法,来匹配对应的匹配方法或字符串组 它们可用于搜索,编辑或操纵文本和数据 正则表达式通常用于验证输入和检索信息 比如我们要 ...
- OO第三单元作业——魔教规格
OO第三单元作业--魔教规格 JML的理论基础和相关工具 JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...
- addeventlistener回调函数中的黑科技
dom.addEventListener('click',callback/obj){},这里的callback除了传递一个函数之外,还可以传递一个属性带有 HandleEvent 方法的对象obj, ...