Android编程权威指南-第十七章挑战练习
2015-08-05 14:47
381 查看
CriminalIntentJSONSerializer.java文件
并在AndroidManifest.xml文件中声明权限
package com.onevol.app; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONTokener; import android.content.Context; import android.os.Environment; public class CriminalIntentJSONSerializer { private Context mContext; private String mFilename; public CriminalIntentJSONSerializer(Context c, String f){ mContext = c; mFilename = f; } public void saveCrimes(ArrayList<Crime> crimes) throws JSONException, IOException{ JSONArray array = new JSONArray(); for(Crime c : crimes) array.put(c.toJSON()); Writer writer = null; try{ OutputStream out = null; if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//检测是否有sd卡 File sdCard = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), mFilename);//获取sd卡的绝对路径,就是全部的路径。 out = new FileOutputStream(sdCard); }else{ out = mContext.openFileOutput(mFilename, Context.MODE_PRIVATE); } writer = new OutputStreamWriter(out); writer.write(array.toString()); } finally { if(writer != null) writer.close(); } } public ArrayList<Crime> loadCrimes() throws IOException, JSONException{ ArrayList<Crime> crimes = new ArrayList<Crime>(); BufferedReader reader = null; try{ InputStream in = null; if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File sdCard = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), mFilename); in = new FileInputStream(sdCard); }else{ in = mContext.openFileInput(mFilename); } reader = new BufferedReader(new InputStreamReader(in)); StringBuilder jsonString = new StringBuilder(); String line = null; while((line = reader.readLine()) != null){ jsonString.append(line); } JSONArray array = (JSONArray) new JSONTokener(jsonString.toString()).nextValue(); for(int i = 0; i < array.length(); i++){ crimes.add(new Crime(array.getJSONObject(i))); } }catch(FileNotFoundException e){ }finally{ if(reader != null) reader.close(); } return crimes; } }
并在AndroidManifest.xml文件中声明权限
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
相关文章推荐
- android应用生命周期
- Android 谷歌 开源 通信框架 VOLLEY(六)——应用实例
- Android图片下载缓存库picasso解析
- Android 自定义ViewGroup 实现流式布局
- 深入解析Android的自定义布局
- Android L 5.0 上紧急电话EmergencyCall与普通电话在MO流程上的区别
- Android学习笔记——声明
- Android init进程——属性服务
- android 问题集锦
- Android编译过程详解(三)
- Android 图形:绘制渐变色奥运五环图形,游戏文字,验证码,Matrix旋转,缩放,倾斜,平移等
- Android编译过程详解(二)
- Android编译过程详解(一)
- Android优化之代码优化
- android studio sdk更新 (2015-8-5)
- Android学习笔记——Android生命周期
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- 终结android开发关于R文件的报错
- 一个简单的ExpandableView例子
- 9个Web工具提高Android开发效率