DataManager

/**
* 本地数据的存储
* @author Administrator
*
*/
public class DataManager {
private static final String TEST_FILENAME="testorder.asc";
private static final String TEST_ABCPATH="/data/data/deliver.jms.com.cn/files/testorder.asc"; //包名
private static final String LOGIN="login";
private static final String NOTIFYORDERS="notifyorders";
private static final String PRODUCT="product";
private static final String SKU="sku";
private static final String ORDER="order";
private static final String BITMAP="bitmap";
private HashMap<String,ArrayList<Object>> DataList = null;
private volatile static DataManager instance; private DataManager(Context context){
File file=new File(TEST_ABCPATH);
if(!file.exists()){
DataList = new HashMap<String,ArrayList<Object>>();
DataList.put(SKU, new ArrayList<Object>());
DataList.put(PRODUCT, new ArrayList<Object>());
DataList.put(LOGIN, new ArrayList<Object>());
DataList.put(NOTIFYORDERS, new ArrayList<Object>());
DataList.put(ORDER, new ArrayList<Object>());
DataList.put(BITMAP, new ArrayList<Object>());
writeObjectToFile(context,DataList);
}
}
/**
* 得到本类的一个实例对象
* @param context
* @return
*/
public static DataManager getInstance(Context context){
if(instance == null){
synchronized(DataManager.class){
if(instance == null){
instance = new DataManager(context);
}
}
}
return instance;
}
/**
* 将对象写入本地存储文件中
*/
private synchronized void writeObjectToFile(Context context,HashMap<String, ArrayList<Object>> map){
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream(context.openFileOutput(TEST_FILENAME, Context.MODE_PRIVATE));
//将对象写入文件中
oos.writeObject(map);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(oos!=null){
try {
oos.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
} }
/**
* 读本地文件中的数据对象
*/
private synchronized HashMap<String, ArrayList<Object>> readObjectFromFile(Context context,String fileName){ HashMap<String, ArrayList<Object>> objects=null;
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(context.openFileInput(fileName));
//得到本地数据的所有对象
objects = (HashMap<String, ArrayList<Object>>) (ois.readObject()); } catch (Exception e) {
e.printStackTrace();
}finally{
if(ois !=null){
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} return objects;
} /**
* 保存登陆数据
*/
public void saveLoginData(Context context,Object login){
HashMap<String, ArrayList<Object>> map = readObjectFromFile(context,TEST_FILENAME);
if(map!=null && login!=null){
ArrayList<Object> loginData = map.get(LOGIN);
if(loginData!=null){
loginData.add(login);
writeObjectToFile(context,map);
}
}
}
/**
* 得到登陆数据
*/
public ArrayList<Object> getLoginData(Context context){
ArrayList<Object> loginData=null;
HashMap<String, ArrayList<Object>> objects = readObjectFromFile(context,TEST_FILENAME);
if(objects!=null){
loginData = objects.get(LOGIN);
} return loginData;
}
}

ObjectInputStream缓存数据的更多相关文章

  1. plain framework 1 网络流 缓存数据详解

    网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但 ...

  2. thinkphp 缓存数据

    thinkphp 中内置了缓存操作 3.1版本的数据缓存方法是cache 基本用法: S(array('type'=>'xcache','expire'=>60)); 缓存初始化 缓存初始 ...

  3. HTML5本地缓存数据

    //HTML5本地缓存数据 function putObj(key, data) { if (!!window.localStorage) { var obj = { "key": ...

  4. 刷新本地的DNS缓存数据

    ipconfig /flushdns”执行,刷新本地的DNS缓存数据. ipconfig /displaydns      查看本地DNS缓存记录的命令为:ipconfig /displaydns.你 ...

  5. 网站缓存数据到tomcat服务器

    通过缓存使相同的数据不用重复加载,降低数据库的访问 public class CacheFilter implements Filter { //实例变量[每线程共享] private Map< ...

  6. iOS五种本地缓存数据方式

    iOS五种本地缓存数据方式   iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  7. IE浏览器中ajax使用缓存数据的问题

    今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间. 查了一下这 ...

  8. Java通过SpyMemcached来缓存数据

    配置好Magent+memcached后,很明显数据之间的输入与输出都是通过代理服务器的,magent是做代理服务器的很明显java在memecached的调用驱动在magent同样适用. 这里选择S ...

  9. ThinkPHP使用Memcached缓存数据

    ThinkPHP默认使用文件缓存数据,支持Memcache等其他缓存方式,有两个PHP扩展:Memcache和Memcached,Memcahe官方有说明,主要说一下Memcached. 相对于PHP ...

随机推荐

  1. Django模型系统——ORM中跨表、聚合、分组、F、Q

    核心知识点: 1.明白表之间的关系 2.根据关联字段确定正反向,选择一种方式 在Django的ORM种,查询既可以通过查询的方向分为正向查询和反向查询,也可以通过不同的对象分为对象查询和Queryse ...

  2. sql语句 字段的赋值

    将同一个表中的一个字段2的所有值赋值给另一个字段1 UPDATE 表名 SET 字段1 = 字段2 也可以把字段所有的值赋为null UPDATE 表名 SET 字段1 = null

  3. 扣出thinkphp数据库操作类

    假如你是一位thinkphp的使用者,想必你会觉得thinkphp操作数据库非常方便.现在在你面前有一个非常小的作业,小到完全没有必要用thinkphp去完成它.但是你又觉得不用thinkphp的话, ...

  4. nodejs模块之event

    event模块是nodejs系统中十分重要的一个模块,使用该模块我们可以实现事件的绑定的触发,为什么我们需要这个模块呢,因为nodejs是单线程异步的. 一.什么是单线程异步: 我们可以从JavaSc ...

  5. awk过滤磁盘使用率

    过滤出大于某个值的磁盘使用率: #!/bin/bash diskspace=`df -Ph`IFS="\n" for line in $diskspace;do        ec ...

  6. php获取图片的拍摄及其他数据信息

    服务器配置说明:1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前 ...

  7. STL中流相关的输入输出符和get函数彻底总结:cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    我的总结: [首先:对于流来说,就把流看成一个中转的仓库,对流进行<<运算或>>运算或者get函数的运算都是指,把“流”中的数据“运送”到“内存变量”中去,还是把内存变量中的数 ...

  8. Codeforces Round #250 (Div. 2) D. The Child and Zoo 并查集

    D. The Child and Zoo time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  9. php 设置页面导航动态active类样式的添加

    在用php制作项目中,一般都是把页头和页脚分离出来.页头导航在选中状态时会有一些样式,例如active等,当页面在首页时候,导航的首页也应该是active的样式,那么,怎么用php控制这些样式的添加和 ...

  10. Java 学习摘要

    //导入 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; Date dt= ...