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. shell编程3 ---流程控制语句

    shell编程流程控制语句 一.if流程控制语句 1.单分支if条件判断语句 if [  条件判断式 ]:then     或者   if[ 条件判断式 ] 程序                   ...

  2. rails dependent

    dependent 可以設定當物件刪除時,也會順便刪除它的 has_many 物件: class Event < ActiveRecord::Base has_many :attendees, ...

  3. ssh允许root用户登陆

    新的系统无root用户密码,设置root用户密码,修改也是这么修改 sudo passwd root 连续输入两次新密码. 允许root用户登陆: /etc/ssh/sshd_config 找到 Pe ...

  4. 第一篇 dom

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  5. Ubuntu下,grep的用法

    grep(Global search Regular Expression and Print out the line)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.U ...

  6. TMS scripter使用心得

    TMS scripter提供了在delphi应用程序中使用pascal 脚本的能力.TMS scripter同时提供了一个工具SSImport.exe,用来把打算在应用程序中使用的类自动生成wrape ...

  7. 对unidbgrid的单元格操作

    一.使某行某列单元格disabled: 1. UniStringGrid -> Options -> goEditing = true 2. UniStringGrid -> Ext ...

  8. MapReduce修改输出的文件名

    MapReduce默认输出的文件名称格式如下:part-r-00000 自定义名称,比如editName,则输出的文件名称为:editName-r-0000,此方法没有彻底修改整个文件名,只修改了一部 ...

  9. 分享知识-快乐自己:ActiveMQ 安装部署

    1):下载 ActiveMQ tar 包 2):上传到 服务器中 3):解压到 指定目录中 [root@admin tools]# tar -zxvf apache-activemq-5.2.0-bi ...

  10. Git教程及问题解析

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Git教程 最近用git比较多,做出教程一份,供大家参考. 1.        安装Git,并配置环 ...