事前准备:
//创建一个Crime类 public class Crime { private String mTitle; private UUID mUUID; private Date mDate; private boolean isSolved; public Crime(){ mUUID = UUID.randomUUID(); mDate = new Date(); } }
//创建CrimeLab类 以单例的方式存储一堆Crime public class CrimeLab { private static CrimeLab sCrimeLab; private ArrayList<Crime> mCrimeItems; private Context mContext; private CrimeLab(Context context){ mContext = context; mCrimeItems = new ArrayList<>(); for (int i=0; i<20; ++i){ Crime crime = new Crime(); crime.setTitle("#Crime"+i); crime.setIsSolved(i % 2 == 0 ? true : false); mCrimeItems.add(crime); }//创建20个Crime } }
1.将Crime对象存储到File中并读取
前提知识:
1.context.openFileOuputStream();
http://blog.sina.com.cn/s/blog_6e5195850100zssn.html
//2.Criem类 创建 toJson()方法 public JsonObject toJson(){ JsonObject object = new JsonObject(); object.put("CrimeTitle",mTitle); object.put("CrimeDate",mDate); ..... return object; }//将Crime转化成JsonObject
3.JsonToken
将文本解析为json格式的类。
使用:
//创建JsonCrime public JsonCrime{ private String mFileName = "..."; private Context mContext; public JsonCrime(String fileName,Context context){ mFileName = fileName; mContext = context; } //将Crime对象的数据保存到File中 public saveCrime(ArrayList<Crime> crimeItems){ JsonArray jsonArray = new JsonArray(); for (Crime c:crimeItems){ jsonArray.put(c.toJson); }//将全部的Crime放入jsonArray中 FileOutputStream fos = context.openFileOutput(String fileName,int mode);//取得文件的输出流 Writer writer = new OutputStreamWriter(fos);//字节流变成字符流 String data = jsonArray.toString;//重点:array可以转化成String类型 writer.write(data);//将jsonArray的信息写入到文件中 } //从File中读取数据 public ArrayList<Crime> loadCrime(){ FileInputStream is = mContext.openFileInputStream(); Reader reader = new InputStreamReader(is);//字节流转化成字符流 BufferedInputStream bis = new BufferedInputStream(reader);//套一层缓冲流 StringBuilder sb = new StringBuilder(); while((String str = bis.readLine()) != null){ sb.append(str); } JsonArray jsonArray =(JsonArray)new JsonToken(sb.toString).nextValue(); //将String类型转成json类型的方法 ..... } }