Android几种数据存储方式

  1. 文件存储
  2. SharedPreference存储
  3. Json解析
  4. SQLite数据库存储

文件存储

文件存储是Android中最基本的一种存储方式,和Java中实现I/O的方式,由Context类提供openFileInput()和openFileOutput()方法打开。文件存储主要分两种存储,一种是内部存储,一种是外部存储。

内存存储:使用了FileInputStream类中的openFileInput()方法,用于读取数据;使用了FileOutputStream类中的openFileOutput()方法,用于写入数据。

外部存储:使用Enviroment类中的getExternalStorageDirectory()方法对外部存储上的文件进行读写。

内存存储-写入文件

                File file = new File(this.getFilesDir(), "info.txt");                try {                    FileOutputStream fos = new FileOutputStream(file);                    String info = qq + "##" + password;                    fos.write(info.getBytes());                    fos.close();                } catch (Exception e) {                    e.printStackTrace();                }

内存存储-读取文件

    /**     * 根据原来保存的文件信息,把QQ号码和密码信息显示到界面     */    private void restoreInfo() {        File file = new File(this.getFilesDir(), "info.txt");        // 如果文件存在并且有内容就读取出来        if (file.exists() && file.length() > 0) {            try {                FileInputStream fis = new FileInputStream(file);                BufferedReader br = new BufferedReader(new InputStreamReader(fis));                String info = br.readLine();                String qq = info.split("##")[0];                String pwd = info.split("##")[1];                mEtnumber.setText(qq);                mEtPasswd.setText(pwd);            } catch (Exception e) {                e.printStackTrace();            }        }    }

外部存储

外部存储,指的是写入到手机SD卡。需要两个3个步骤 1、AndroidManifest.xml 申请权限
2、在调用的地方,注册 Manifest.permission.WRITE_EXTERNAL_STORAGE 权限 3、调用的地方,需要检查SD卡可用状态 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
    /**     * 模拟向SD卡写入一个视频文件     * @param view     */    public void click(View view) {        performCodeWithPermission("写入文件到sd卡", new PermissionCallback() {            @Override            public void hasPermission() {                // 检查SD卡的状态                if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {                    File sdFile = Environment.getExternalStorageDirectory();// 外部存储空间                    long sdSize = sdFile.getFreeSpace();                    if (sdSize > 5 * 1024 * 1024) {// 5M                        File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + "hlw.3gp");                        try {                            FileOutputStream fos = new FileOutputStream(file);                            byte[] buffer = new byte[1024];                            for (int i = 0; i < 5 * 1024; i++) {                                fos.write(buffer);                            }                            fos.close();                        } catch (Exception e) {                            e.printStackTrace();                        }                    } else {                        Toast.makeText(MainActivity.this,"sd卡空间不足", Toast.LENGTH_SHORT).show();                    }                } else {                    Toast.makeText(MainActivity.this,"没有挂载", Toast.LENGTH_SHORT).show();                }            }            @Override            public void noPermission() {            }        }, Manifest.permission.WRITE_EXTERNAL_STORAGE);    }}

SharedPreference存储

对用户输入的账号以及密码进行存储,并且进行显示。我们使用SharedPreferences

存储数据

/**     * 保存用户名 密码的业务方法     * @param context 上下文     * @param username 用户名     * @param pas 密码     * @return true 保存成功  false 保存失败     */    public static void saveUserInfo(Context context,String username,String pas){        /**         * SharedPreferences将用户的数据存储到该包下的shared_prefs/config.xml文件中,         * 并且设置该文件的读取方式为私有,即只有该软件自身可以访问该文件         */        SharedPreferences sPreferences=context.getSharedPreferences("config", context.MODE_PRIVATE);        Editor editor=sPreferences.edit();        //当然sharepreference会对一些特殊的字符进行转义,使得读取的时候更加准确        editor.putString("username", username);        editor.putString("password", pas);        //这里我们输入一些特殊的字符来实验效果        editor.putString("specialtext", "hajsdh><?//");        editor.putBoolean("or", true);        editor.putInt("int", 47);        //切记最后要使用commit方法将数据写入文件        editor.commit();    }

读取数据

 //显示用户此前录入的数据    SharedPreferences sPreferences=getSharedPreferences("config", MODE_PRIVATE);    String username=sPreferences.getString("username", "");    String password =sPreferences.getString("password", "");    ed_username.setText(username);    ed_pasw.setText(password);

显示的XML

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>hajsdh><?//dsadasdasd<int name="int" value="47" /><boolean name="or" value="true" />

 JSON读取

        // 创建Json       JSONObject jsonObject = new JSONObject();       try {           jsonObject.put("name", "jadyli");           jsonObject.put("gender", "male");           jsonObject.put("age", 18);           System.out.println(jsonObject.toString(1));       } catch (JSONException e) {           e.printStackTrace();       }        // 解析Json        String json = "{\"name\": \"jadyli\", \"gender\": \"male\", \"age\": 18}";        try {            JSONObject jsonObject = new JSONObject(json);            System.out.println("姓名:" + jsonObject.getString("name"));            System.out.println("性别:" + jsonObject.getString("gender"));            System.out.println("年龄:" + jsonObject.getString("age"));        } catch (JSONException e) {            e.printStackTrace();        }

 

更多相关文章

  1. Jeally Bean中MonekyRunner 帮助文件
  2. Android开发中高效的数据结构
  3. Android下用程序的方法为ListView设置分割线Divider样式
  4. android启动过程配置文件的解析与语法
  5. [Android Pro] 通过Android trace文件分析死锁ANR
  6. Android中使用SharedPreferences进行数据存储
  7. android 文件读取总结
  8. Android的Animation之LayoutAnimation使用方法
  9. Android中获取文件存储位置(内部存储或者扩展SD卡)

随机推荐

  1. Android进程,任务,服务的信息
  2. 浅析Android线程模型一 --- 转
  3. Android(安卓)背景色平铺。
  4. Android(安卓)ART运行时与Dalvik虚拟机
  5. Android重启应用程序 && 不重启应用不改
  6. Android(安卓)学习 -- android 发展史及
  7. [Android] 环境配置之基础开发环境(SDK/An
  8. Android(安卓)Wear(手表)开发 - 学习指南
  9. Android(安卓)ProgressBar的使用
  10. 防止事件导致的oncreate的多次调用