Android数据存储基础

本文介绍了Android中的数据持久化,包括文件存储、SharedPreferences存储、SQLite数据库存储,以及第三方库LitePal的使用。文件存储允许简单文本或二进制数据的保存,SharedPreferences使用键值对存储,SQLite适合存储复杂关系型数据,而LitePal为数据库操作提供了一层封装。
摘要由CSDN通过智能技术生成

概述

持久化技术就是将内存中的瞬时数据保存到存储设备中,保证在手机关机或某一应用程序关闭的时候,数据不会丢失。

 Android存储文件和数据的地方:

  1. RAM、ROM、内存(内部存储器)、
  2. APP程序里面(Assets,raw,res),
  3. SD卡(早期的安卓的可以插卡,现在的不支持了,但是有些 arm板 嵌入式方向的还是带卡槽的)
  4. 网络

      (参考dadachenchen的文章,原文:https://blog.csdn.net/dadachenchen/article/details/84347616)

  1. RAM、ROM 这些东西我们就别碰了,不然一大堆问题,Environment.getRootDirectory()  需要获取root权限,不合适
  2. 内存和SD卡  大家得理解  Environment.getExternalStorageState()  代表的是什么意思,不是插卡的SD卡,而是说你买了开发板、手机,厂家送你的存储地方(直接你得让他送你哈)。  这部分作为主要的存储路径,小数据和大数据都适用。
  3. SD卡,黑色那张卡,老古董,现在手机都没有了,不建议大家使用
  4. 网络,请求自己的服务器,读取数据,URI的方式,httpClient    post 和 get 两种请求数据的方式

Android中主要提供了3中数据持久化方式:

  1. 文件存储
  2. AharePrefernces存储
  3. SQLite数据库存储
  4. 保存于手机SD卡(不推荐)

在AS中查看模拟器文件存储的方式:

可以在侧边栏打开Device File Explorer选择相应的文件夹进入查看(一般为data/data/package name/files)

一:文件存储

Android中最基本的数据存储方式,它不对存储的任何东西进行任何格式化的处理,所有数据元丰不动的保存到文件中。因此适用于存储一些简单的文本数据或二进制数据。

利用Context中openFileOutput()方法,可以将数据存储到指定的文件中。

利用Context中openFileInput()方法,可以从指定文件中读取数据。

(所有文件默认存储到/data/data/<package name>/files目录下)

/*
    * 利用java IO流的形式完成对文件的存储(原样存储)
    * */
    
    /*
    *@author: banzh
    *@function: 从存储文件中恢复数据到TextView中,测试数据的保存
    *           默认从data/data/package name/files目录下恢复文件。
    *           所以openFileInput()方法只是默认提供files目录下的DATA文件即可
    *@time 2019/5/24 18:15
    **/
    private String load() {
        FileInputStream fileInputStream;
        BufferedReader reader = null;
        StringBuilder builder = new StringBuilder();
        try {
            fileInputStream = getActivity().openFileInput("DATA");
            reader = new BufferedReader(new InputStreamReader(fileInputStream));
            String line = "";
            while ((line = reader.readLine()) != null){
                builder.append(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (reader != null){
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return String.valueOf(builder);
    }

    /*
    *@author: banzh
    *@function: 利用java IO 流的形式保存数据(原样保存)
    *           数据默认保存到data/data/package name/files/DATA中
    *@time 2019/5/24 18:16
    **/
    private void save(String input) {
        FileOutputStream outputStream = null;
        BufferedWriter bufferedWriter = null;
        try {
            outputStream = getActivity().openFileOutput("DATA", Context.MODE_PRIVATE);
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
            bufferedWriter.write(input);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (bufferedWriter != null){
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

二:SharedPreferences存储

SharedPreferences是利用键值对的形式来存储数据的,且支持不同的数据类型,在对数据操作(读取)的时候通过对应的键将其内容读取出来。

SharedPreferences的文件都是存放在/data/data/<package name>/shared——prefs/目录下。

获取SharedPreferences对象的方式:

  1. Context类中的getSharedPreferences()
  2. Activity类中的getPreferences()
  3. PreferenceManager类中的getDefaultSharedPreferences()
/*
         *@author: banzh
         *
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值