android 超轻量级数据存储类详解编程语言
2023-06-13 09:20:29 时间
/**
* android本地存储 ,主要用于存储简单key value键值对。提供增、删、改、查方法。 可自定义路径
* @author Administrator
public class LocalStorage {
private static Properties properties = new Properties();
private static String filepath;
private LocalStorage() {
/**
* @param ctx
* @param fileName
* 文件名
* @return
public static LocalStorage get(Context ctx, String fileName) {
return get(ctx.getCacheDir() + "/" + fileName);
/**
* @param filePath
* 文件绝对路径
* @return
public static LocalStorage get(String filePath) {
createFile(filePath);
filepath = filePath;
try {
properties.load(new FileInputStream(filepath));
return new LocalStorage();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return null;
private static void createFile(String fileName) {
File file = new File(fileName);
if (!file.exists()) {
String path = file.getAbsolutePath();
String[] sourceStrArray = path.split("/");
String dirPath = "";
for (int i = 0; i sourceStrArray.length - 1; i++) {
if (!sourceStrArray[i].equals("")) {
dirPath += "/" + sourceStrArray[i];
new File(dirPath).mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
public String getAsString(String key) {
if (key == null) {
return null;
Properties props = new Properties();
try {
props.load(new FileInputStream(filepath));
String value = props.getProperty(key);
value = URLDecoder.decode(value, "utf-8");
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
public int getAsInt(String key) {
String str = getAsString(key);
if (str == null)
return -9999;
return Integer.valueOf(str).intValue();
public boolean getAsBoolean(String key) {
String str = getAsString(key);
if (str == null)
return false;
if (str.equals("true"))
return true;
return false;
public long getAsLong(String key) {
String str = getAsString(key);
if (str == null)
return -9999;
return Long.valueOf(str).longValue();
public float getAsFloat(String key) {
String str = getAsString(key);
if (str == null)
return -9999;
return Float.valueOf(str).floatValue();
public double getAsDouble(String key) {
String str = getAsString(key);
if (str == null)
return -9999;
return Double.valueOf(str).doubleValue();
/**
* 添加
* @param keyname
* @param keyvalue
public void put(String keyname, Object keyvalue) {
// 处理中文乱码
String value = keyvalue.toString();
try {
value = URLEncoder.encode(value, "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
try {
OutputStream fos = new FileOutputStream(filepath);
properties.setProperty(keyname, value);
properties.store(fos, null);
} catch (IOException e) {
/**
* 更新
* @param keyname
* @param keyvalue
public void update(String keyname, String keyvalue) {
try {
properties.load(new FileInputStream(filepath));
OutputStream fos = new FileOutputStream(filepath);
properties.setProperty(keyname, keyvalue);
properties.store(fos, null);
} catch (IOException e) {
/**
* 根据key删除
* @param key
public void delete(String key) {
try {
FileInputStream fis = new FileInputStream(filepath);
properties.load(fis);
Map String, String map = new HashMap String, String
Set Object keySet = properties.keySet();
for (Object object : keySet) {
String objectkey = (String) object;
String value = (String) properties.get(objectkey);
map.put(objectkey, value);
map.remove(key);
properties.remove(key);
for (java.util.Map.Entry String, String entry : map.entrySet()) {
properties.setProperty(entry.getKey(), entry.getValue());
FileOutputStream fos = new FileOutputStream(filepath);
properties.store(fos, "delete key:" + key);
fos.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
使用方法
// 这里获取LocalStorage对象。参数也可以为文件绝对路径,当然也可以直接传入Context和文件名。 LocalStorage localStorage = LocalStorage.get("test.txt"); // 增加 localStorage.put("key", "哈哈"); // 更新 localStorage.update("key", "value"); // 查找,这里提供多个getAs 方法。取数据找到相应的数据类型 localStorage.getAsString("key"); // 删除 localStorage.delete("key");
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10637.html
cjava相关文章
- 加密狗android,Android系统加密狗的设计与实现
- android 空间分享到朋友圈,Android开发之微信分享到好友,朋友圈
- android 的hook技术,Android Native Hook技术(一)
- android 混淆不起作用,Android代码混淆的写法总结
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android_混淆
- android bugku ctf mobile做题过程记录
- android 模拟器 haxm,Android模拟器不使用HAXM
- android vlc 中文字幕,解决Android版vlc中文乱码问题
- android 验证码短信验证码,Android短信验证码倒计时验证的2种常用方式
- android toast全屏,Android Toast实现全屏显示
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- Android触摸事件_android设置按钮点击事件
- android进程间通信的方式_Android进程注入
- 【Android 异步操作】Handler 机制 ( Android 提供的 Handler 源码解析 | Handler 构造与消息分发 | MessageQueue 消息队列相关方法 )
- 【Android 文件管理】分区存储 ( 修改与删除图片文件 )
- 【Android 组件化】路由组件 ( 生成 Root 类记录模块中的路由表 )
- 【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )
- android Universal Image Loader for Android 说明文档 (1)详解手机开发
- Android 应用程序的快捷方式详解编程语言
- Android实现PHP连接MySQL进行数据交互(android通过php连接mysql)
- 基于android中权限的集合汇总
- Android实现下载文件功能的方法