package czd.lib.cache; import czd.lib.application.ApplicationUtil; import czd.lib.data.PreferenceUtil; import czd.lib.data.FileUtil; import java.io.*; /** * Created with IntelliJ IDEA. * User: chenzhidong * Date: 13-12-30 * Time: 上午11:56 */ public class FileCache extends AbsFileCache<Object> implements CacheI<Object> { protected static FileCache instance; public FileCache() { super(); this.name = "object"; } public static FileCache getInstance() { if (instance == null) instance = new FileCache(); return instance; } @Override public boolean save(String key, final Object value) { cleanOld(); final File file = genFile(key); if (file.exists() && file.isFile()) file.delete(); writer.execute(new Runnable() { @Override public void run() { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(value); oos.flush(); oos.close(); FileUtil.write(file, baos.toByteArray()); } catch (IOException e) { e.printStackTrace(); } } }); PreferenceUtil.writeLongPreference(ApplicationUtil.application_context, this.name, genKey(key), System.currentTimeMillis()); return true; } @Override public Object get(String key) { File file = genFile(key); if (file.exists() && file.isFile() && file.canRead()) { try { byte[] data = FileUtil.read(file); ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data)); Object obj = ois.readObject(); ois.close(); return obj; } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return null; } }