package com.think.uiloader.data.store.internal; import android.annotation.SuppressLint; import android.content.Context; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InvalidClassException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * Created by borney on 3/21/17. */ @SuppressLint("NewApi") class ObjImpl<T extends Serializable> implements Obj<T> { private static final String APP_OBJECT = "app_obj"; private Context mContext; private File mObjFile; ObjImpl(Context context, String objFileName) { mContext = context; mObjFile = new File(mContext.getDir(APP_OBJECT, Context.MODE_PRIVATE), objFileName); } @Override public void set(T obj) { try (FileOutputStream fos = new FileOutputStream(mObjFile); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(obj); oos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public T get() { try (FileInputStream fis = new FileInputStream(mObjFile); ObjectInputStream ois = new ObjectInputStream(fis)) { return (T) ois.readObject(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { if (e instanceof InvalidClassException) { mObjFile.delete(); } } return null; } }