安卓学习之文件存储(笔记)

这篇博客主要探讨了在安卓开发中如何利用SharedPreferences进行文件存储,详细讲解了通过getSharedPreferences方法获取对象,以及如何保存和读取数据。同时,文章提到了序列化的应用,以短信为例,介绍了如何使用序列化保存数据到XML文件,并解析XML文件。
摘要由CSDN通过智能技术生成

通过getSharedPreferences(“文件名”,权限)获取SharedPreferences;

SharedPreferences sp = getSharedPreferences(“info”,MODE_PRIVATE);
- 保存值:(通过sp获取edit,通过edit中的方法进行保存值)
Editor editor= sp.edit();
editor.putString(“uName”,uName); //uName在这里是从后台获取的用户名数据
editor.putString(“uPass”,uPass); //upass是从后台获取的密码数据
editor.commit();
- 取值:
String u =sp.getString(“uName”,”“);
String p =sp.getString(“uPass”,”“);

序列化

以短信为例:

public class CMS {
    private String  form;
    private String contentx;
    private String time;
    public String getForm() {
        return form;
    }
    public void setForm(String form) {
        this.form = form;
    }
    public String getContentx() {
        return contentx;
    }
    public void setContentx(String contentx) {
        this.contentx = contentx;
    }
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
    @Override
    public String toString() {
        return "CMS{" +
                "form='" + form + '\'' +
                ", contentx='" + contentx + '\'' +
                ", time='" + time + '\'' +
                '}';
    }
}
使用普通方法保存数据到xml:
    public void saveCMS(view v){
       StringBuffer  sb= new StringBuffer();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        sb.append("<smsList>");
        for (int i=0;i<cmsList.size();i++){
            CMS  cms=cmsList.get(i);
            sb.append("<cms>");
            sb.append("<form>");
            sb.append(cms.getForm());
            sb.append("</form>");
            sb.append("<content>");
            sb.append(cms.getContent());
            sb.append("</content>");
            sb.append("<time>");
            sb.append(cms.getTime());
            sb.append("</time>");
            sb.append("</cms>");
        }
        sb.append("</smsList>");
        String xml = sb.toString();
        try{
            FileOutputStream  fos =openFileOutput("cms.xml",MODE_PRIVATE);
            fos.write(xml.getBytes());
            fos.close();
        }catch (Exception e){
             e.printStackTrace();
        }
    }

使用序列化进行保存数据

 //xml序列化器
    public  void saveCMSby(view v){
      XmlSerializer serializer= Xml.newSerializer();
        try{
            serializer.setOutput(openFileOutput("cms.xml",MODE_PRIVATE),"utf-8");
            serializer.startDocument("utf-8",true);
            serializer.startTag(null,"scmlist");
            for(CMS m:cmsList){
                serializer.startTag(null,"cms");
                serializer.startTag(null,"form");
                serializer.text(m.getForm());
                serializer.endTag(null,"form");
                serializer.startTag(null,"content");
                serializer.text(m.getContent());
                serializer.endTag(null,"content");
                serializer.startTag(null,"time");
                serializer.text(m.getTime());
                serializer.endTag(null,"time");
                serializer.endTag(null,"cms");
            }
            serializer.endTag(null,"scmlist");
            serializer.endDocument();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

解析xml文件

获取解析器:

public  void  parXml(View  view){
        XmlPullParser pullParser=Xml.newPullParser();
        List<CMS> cmsList=null;
        CMS cms=null;
        try {
            pullParser.setInput(openFileInput("cms.xml"),"utf-8");
            int  eventType=pullParser.getEventType();
            while (eventType!=XmlPullParser.END_DOCUMENT){
                switch (eventType){
                    case XmlPullParser.START_TAG:
                        if("cmslist".equals(pullParser.getName())) {
                                cmsList=new ArrayList<>();
                        }else if("cms".equals(pullParser.getName())){
                            cms=new CMS();
                        }else if("form".equals(pullParser.getName())){
                            cms.setForm(pullParser.nextText());

                        }else if("content".equals(pullParser.getName())){
                            cms.setContent(pullParser.nextText());
                        }else if("time".equals(pullParser.getName())){
                            cms.setTime(pullParser.nextText());
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if("cms".equals(pullParser.getName())){
                            cmsList.add(cms);
                        }
                        break;
                }
               eventType= pullParser.next();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值