Android数据存储的五种方式1

简介: Android数据存储的五种方式

使用SharedPreferences存储数据

介绍: 它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。只能在同一个包内使用,不能在不同的包之间使用。

获得SharedPreferences对象的方式


通过Context的getSharedPrerences(key, [模式])方法获取SharedPreferences对象。

方法的第一个参数是用于指定SharedPreferences文件的名称,第二个参数是指定操作模式。

主要有两种模式进行选择:MODE_PRIVATE(默认操作模式), MODE_MULTI_PROCESS;

通过Activity类提供的getPrerences(key)方法获取到SharedPreferences对象,该方法会创建一个以当前活动类名作为SharedPreferences文件名的文件;

通过PreferencesManager类中的getDefaultPreferernces()方法获得,这是一个静态的方法,他接收一个Context参数,并将当前应用程序的包名作为SharedPreferences文件名。


写数据

// key = "gjcData",也就是数据存储在data/data/程序包名/shared_prefs目录下的gjcData.xml文件下
// 获取SharedPreferences对象
SharedPreferences preferences = getSharedPreferences("gjcData", MODE_PRIVATE);
// 使用SharedPreferences的editor()方法获取Editor对象
SharedPreferences.Editor editor = preferences .edit();
// 通过Editor的putXXX()方法以键值对形式存储数据
editor.putString("name", "是阿超");
// 通过Editor的commit()方法提交数据
editor.commit();

读数据

// 获取SharedPreference对象
SharedPreferences preferencesOutput = getSharedPreferences("gjcData", MODE_PRIVATE);
// 通过SharedPreference对象的getXXX方法获取数据(第一个参数是要获取的值的key,第二个参数是如果键值不存在返回的默认的XXX类型的值)
String content = preferencesOutput.getString("name", "");

Editor的commit()提交数据和apply()提交数据的区别

  • commit和apply虽然都是原子性操作,但是原子的操作不同。
  • commit是原子提交到数据库,从提交数据到存在磁盘中都是同步过程;

而apply方法的原子操作是原子提交到内存中而非数据库,之后再异步提交数据到数据库中。

commit提交是同步过程,效率会比apply异步提交的速度慢,有返回值;

apply没有返回值,无法知道存储是否失败。

(在不关心提交结果是否成功的情况下,优先考虑apply方法)

文件存储数据

介绍: 文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。


文件存储分为两种:内部存储和外部存储


内部存储:指Android为应用程序分配的内存(不需要任何权限)

外部存储:手机的内存空间,手机内置sd卡(需要加入读写外部存储权限)

内部存储

files目录下写数据
FileOutputStream fileOutputStream;
PrintWriter writer;
try {
    // 通过Context的openFileOutput(String filename, int mode)方法拿到数据流(第一个参数是在/data/data//files目录下存储的文件名,第二个参数是文件的操作模式)
    fileOutputStream = openFileOutput("gjcData", MODE_PRIVATE);
    writer = new PrintWriter(new OutputStreamWriter(fileOutputStream));
    writer.write("Hello world");
    writer.flush();//刷新流
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    writer.close();
    fileOutputStream.close();
  }
files目录下读数据
FileInputStream fileInputStream;
BufferedReader bufferedReader;
try {
    // 通过Context的 openFileInput(String filename)方法拿到数据流(参数为/data/data//files目录下需要读取的文件名)
    fileInputStream = openFileInput("gjcData");
    bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
    String line = bufferedReader.readLine();
    while (line != null) {
      Log.d("data", "" + line);
      line = bufferedReader.readLine();
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    bufferedReader.close();
    fileInputStream.close();
  }

通过Context类中的getCacheDir()方法获取/data/data//cache目录创建相关的文件存储数据

cache目录下写数据
// 创建/data/data/<package name>/cache/gjcData文件对象
FileOutputStream fos;
PrintWriter writer;
File file = new File(getCacheDir(), "gjcData");
if (!file.exists()) {
  try {
    file.createNewFile();//如果文件不存在,则创建
    fos = new FileOutputStream(file);
    writer = new PrintWriter(new OutputStreamWriter(fos));
    writer.write("Hello world");
    writer.flush();
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    writer.close();
    fos.close();
  }
}

Android数据存储的五种方式2:https://developer.aliyun.com/article/1473560

目录
相关文章
|
7月前
|
存储 Java 数据库
Android数据存储:什么是Room Persistence Library?
Android数据存储:什么是Room Persistence Library?
139 0
|
7月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
95 0
|
存储 数据库 文件存储
android 数据存储的知识点
android 数据存储的知识点
101 0
|
7月前
|
存储 XML Android开发
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
Android Studio App开发入门之数据存储中共享参数SharedPreferneces的讲解及使用(附源码 超详细必看)
82 0
|
7月前
|
存储 安全 Android开发
Android数据存储:请解释ContentProvider是什么,它的主要作用是什么?
ContentProvider是Android的四大组件之一,主要负责结构化数据的管理与共享。它封装数据并提供安全的访问接口,通过URI实现应用间数据的标准化共享。ContentResolver与ContentProvider协作,处理数据的CRUD操作,使得其他应用能方便地调用和操作数据。
62 0
|
7月前
|
存储 Android开发
Android数据存储的五种方式3
Android数据存储的五种方式
47 0
|
7月前
|
存储 SQL 数据库
Android数据存储的五种方式2
Android数据存储的五种方式
74 0
|
7月前
|
存储 XML 文件存储
Android数据存储:什么是SharedPreferences?它有什么用途?
Android数据存储:什么是SharedPreferences?它有什么用途?
300 0
|
7月前
|
存储 数据库 文件存储
android开发,使用kotlin学习数据存储
android开发,使用kotlin学习数据存储
113 0
|
存储 文件存储 Android开发
原汁原味的安卓文件存储(数据存储系列)
本篇将进一步看看文件存储是怎么用的。
176 0