package joyport.hbase;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.HashMap;

/**

* 文件缓存读写

*

* @author xiepeng@joyport.com

*/

public class UtilFileCache {

private static String dir;

private HashMap cache = new HashMap();

/**

* 不带最后的反斜杠

*

* @param dir

* String

* @throws Exception

*/

public UtilFileCache(String dir) throws Exception {

UtilFileCache.dir = dir;

// 检查并创建缓存目录

File file = new File(UtilFileCache.dir);

if (!file.exists()) {

file.mkdir();

}

}

/**

* 有内存缓存层的反持久化

*

* @param key

* String

* @return Object

* @throws Exception

*/

@SuppressWarnings("unchecked")

public T get(String key) throws Exception {

Object list = this.cache.get(key);

// 检查有无文件缓存

if (null == list) {

list = this.readFile(key);

this.cache.put(key, list);

}

return (T) list;

}

/**

* 有内存缓存层的持久化

*

* @param key

* String

* @param data

* Object

* @throws Exception

*/

public void put(String key, T data) throws Exception {

this.cache.put(key, data);

this.saveFile(key, data);

}

/**

* 反持久化

*

* @param key

* String

* @return Object

* @throws Exception

*/

@SuppressWarnings("unchecked")

private T readFile(String key) throws Exception {

File file = new File(dir + "/" + key);

Object list = null;

if (file.exists()) {

if (file.isFile()) {

ObjectInputStream ois = new ObjectInputStream(

new FileInputStream(file));

list = (Object) ois.readObject();

ois.close();

}

}

return (T) list;

}

/**

* 文件持久化

*

* @param key

* String

* @param data

* Object

* @throws Exception

*/

private void saveFile(String key, T data) throws Exception {

File file = new File(dir + "/" + key);

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(

file));

oos.writeObject(data);

oos.flush();

oos.close();

}

}

java 写文件缓存,java泛型实现文件缓存相关推荐

  1. java写枪战游戏,Java版星球大战游戏(横向射击)

    Java版星球大战游戏(横向射击) 准备逐步整理一下手中的第三方Java游戏代码,将能用的部分融入到LGame里去,没有能用部分的就直接删掉. 但无论程式难易如何,也是原作者一番心血,不应将它们弃如敝 ...

  2. 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)

    初学Java,写一个控制台输入输出的小游戏,模拟人机猜拳.为了扩展性稍微强一些,这个小游戏代码有些复杂,但确实可以扩展其他游戏或者其他参与者的. 代码还有一些小问题,后面贴出来... /******* ...

  3. 如何用JAVA写acm_用java来写ACM

    前言 从去年10月份开始就一直都在九度oj平台写acm,到今天在九度oj的总排名已经到了第6名,收获很多特别是算法和数据结构方面的提高,这种提高直接反映在我找工作的顺利中 但是人总要学会拥抱变化,特别 ...

  4. JAVA写代码学费,java编程培训班学费是多少

    JavaWeb 01HTML5入门 -HTML的作用 -全局标签 -绝对路径与相对路径 -常见标签 -字符集 -图片整合 -表单标签 -布局指定的网页 02CSS3入门 -css声明类型 -常见的各种 ...

  5. java写dnf_用java模拟dnf武器强化的过程

    几点说明:需要用户输入武器初始等级以及是否需要进行强化. 整个强化过程都包含在一个while循环里,利用标记i来停止循环,i==1继续强化:i==0为停止强化. 关于概率的问题,运用到随机数,r为0~ ...

  6. 网盘文件管理系统——java实现

    简介 用java写的网盘类型的文件管理系统后端部分.后端主要通过FilePath和FileName字段确定一个文件(夹),一种模拟文件系统的方式显示. ApiFox接口文档 注:分片上传功能还未上线. ...

  7. android java写文件_Android中文件的读写(一)----流操作

    因为自己的Java基本功不扎实,所以这篇文章主要介绍Java中的流操作,让自己再学习一下. Java IO Java IO中用于读写文件的四个抽象类:Reader,Writer,InputStream ...

  8. android java 写文件操作_Android编程之文件的读写实例详解

    本文实例分析了Android编程之文件的读写方法.分享给大家供大家参考,具体如下: Android的文件读写与JavaSE的文件读写相同,都是使用IO流.而且Android使用的正是JavaSE的IO ...

  9. java 写文件 0x0d_Java的文件读写操作 转

    目录: file内存----输入流----程序----输出流----file内存 java中多种方式读文件 判断文件是否存在不存在创建文件 判断文件夹是否存在不存在创建文件夹 java 写文件的三种方 ...

最新文章

  1. 三招教你如何判断ERP软件是否适用
  2. 电子科技大学计算机网络实验,计算机网络实验电子科技大学.doc
  3. oracle 值集附加列,EBS值集知识小结
  4. 什么是Spring 框架?Spring 框架有哪些主要模块?
  5. matlab如何将相近的数据,matlab新手,求帮助!主要是如何将数据和公式导入
  6. 工作180:前端是业务需求理解
  7. gitlab 删除分支_如何删除gitlab上默认受保护的master主分支
  8. ai怎么渐变颜色_你根本想不到AI的混合工具有多神奇!
  9. 震后十年,他重走那条生死送货线
  10. div模拟textarea在ios下不兼容的问题解决
  11. OSPF邻接关系建立过程
  12. 跨境电商热之下推ShopExpress,微盟靠什么出海寻新增量?
  13. 大学生创新项目——机房监控系统设计概述
  14. 算法分析与设计实验报告——0-1背包问题的动态规划算法实现
  15. 2020国内学者SCIENCE发文盘点,生物类 37 篇 (新冠相关 9 篇)
  16. 桌面图标小箭头去除方法
  17. 服务器UDIMM, LRDIMM,RDIMM三种内存的区别
  18. android4.4 音量控制,android4.4调整音量调节速度
  19. 360手机刷机:360N7pro刷机
  20. java string 去掉某个字符_JAVA String 如何去掉指定字符

热门文章

  1. Python序列类型常用函数练习:enumerate() reversed() sorted() zip()
  2. opencv感兴趣通道COI的使用
  3. php重复点击按钮无效,完美解决UIButton按钮重复点击、多次响应的问题
  4. 华为鸿蒙osbeta发布会,华为鸿蒙 OS Beta 3
  5. python 最快 因式分解_Python实现的对一个数进行因式分解操作示例
  6. Linux如何避免每次开启 CentOS 时,都要手动开启 sshd 服务,防止连接不上Xshell
  7. matlab多变量频域设计工具箱,10.4.3用MATLAB实现连续系统的频域分析.ppt
  8. mysql集群fuzhi_MySQL集群 和MySQL主从复制的不同
  9. 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
  10. 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)