• 实现JSON数据的存储和读取


    事前准备:

    //创建一个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类型的方法
         .....
      }
    }
        
  • 相关阅读:
    Deno下一代Nodejs?Deno初体验
    2018年JavaScript现状报告
    国企程序员是一种怎样的体验
    前端面试送命题(二)-callback,promise,generator,async-await
    Nodejs mongoose 详解
    JS的进阶技巧
    Nodejs经验谈
    给腾讯云Linux主机创建Swap文件
    LVS跨网段DR模式并使用ldirectord实现RS高可用性
    LAMP配置NFS页面共享,autofs实现挂载,DNS实现名称解析,纯手动操作
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5238798.html
Copyright © 2020-2023  润新知