
事前准备:
//创建一个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类型的方法
.....
}
}