Android 数据存储

原创 2016年06月01日 17:40:38

Android 数据存储

Android中数据存储的方式有一下几种:

 一.SharedPreferences :

            是一种轻量级的数据存储方式,主要用于保存应用的一些常用配置,以xml 文件的方式存储数据,

            以键值对的方式存取数据。

            SharedPreferences 的类型(MODE):

            MODE_PRIVATE :私有类型,只允许本应用使用,这个为默认类型

            MODE_APPEND :如果SharedPreferences 文件已经存在,则数据写入这个文件的末尾

            MODE_WORLD_READABLE : 允许其他app读取数据 ,这个值在API 17 被废除了(可能为了保护数据安全)

            MODE_WORLD_WRITEABLE : 允许其他app写入数据 ,这个也是 在 API 17 废除

            获取SharedPreferences 的两种方式:

            getSharedPreferences(String name,int MODE);获得的对象可以被同一应用程序下的其他组件共享

            getPreferences(); 获得的SharedPreferences对象只能在该Activity中使用.

            保存数据:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            SharedPreferences.Editor editor = sp.edit();

            editor.put(String key,String value);

            editor.commit(); 提交数据

            读取数据:

            SharedPreferences sp = Context.getSharedPreferences(String name,int MODE);

            String value = sp.get(String key);

                         

二.基于Java IO 方式的 file:

IO操作数据有两种不同的类型:私有的file,存放在data/data/目录下, 另一个是对SDcard操作

            1.私有file:

                保存数据:MODE 和SharedPreferences 一样

                FileOutputStream fo = Context.openFileOutput(String name,int MODE)

                读取数据:

                FileInputStream fi = Context.openFileInput(String name)


            2.对SDCard 的数据进行操作:这里涉及到一个 Environment 类,它是用来管理Android 内部存储和SDcard的

                    其中包含了sdcard的一些字段 表示sd卡当前的状态:

            1. MEDIA_BAD_REMOVAL 在没有挂载前存储媒体已被移除

            2. MEDIA_CHECKING                            正在检查存储媒体

            3. MEDIA_MOUNTED                        存储媒体已挂载,并且挂载点可读写

            4. MEDIA_MOUNTED_READ_ONLY    存储媒体已挂载,但只可读

            5. MEDIA_NOFS                                存储媒体是空白或不支持的文件系统

            6. MEDIA_REMOVED                        存储媒体被移除

            7. MEDIA_SHARED                            存储媒体正在通过USB共享

            8. MEDIA_UNMOUNTABLE               存储媒体无法挂载

            9. MEDIA_UNMOUNTED                   存储媒体没有挂载

                   Environment 中的一些静态方法:

                    获取Android 根目录 File root = Environment.getRootDirectory();

                    获取data目录         File data = Environment.getDataDirectory();

                    获取 Android 下载/缓存内容目录 File file = Environment.getDownloadCacheDirectory();

                    获取SDCard状态 :Environment.getExternalStorageState();

                    获取SDCard根目录:File root = Environment.getExternalStorageDirectory();


                    对SDCard进行数据存取的话,首先获取sdcard 的状态,判断sdcard是挂载,如果挂载了sdcard

                    则获取Sdcard 的根目录,然后和自己创建的文件的目录拼接成一个文件的存放目录,最后用IO即可

                    (这里有个小细节:File类型的量可以和字符串直接用“+”拼接,然后变成字符串)

                    File root = Environment.getExternalStorageDirectory();//获取sdcard根目录

                    File file = new File(root+File.separator+"MyFile.txt");  separator 为路径分隔符



三.SQLite 数据库:

        Android 内置的SQLite是一种轻量级的数据库,SQL数据库的功能它基本都有

        Android操作SQLite涉及到两个类 :

                    SQLiteDataBase :SQLite数据库类,这个类没有构造函数,其对象是通过SQLiteOpenHelper 类获取的

                                    这类具有数据库的增删查改等方法,还可以调用execSQL() 方法来执行标准的SQL语句

                    SQLiteOpenHelper :数据库辅助类,这个类是用来获取已有的数据库 或者 创建新的数据库以及数据库

                                版本号。SQLiteOpenHelper中有两个抽象方法,用于创建数据库中的表格,和升级数据库用                                        的,这两个方法需要用户自己去实现


                创建一个类MyDataBase继承 SQLiteOpenHelper 

                            public MyDataBase(Context context){  构造函数

                                       super(Context context,String dataBaseName,null,int DataBaseVersion);父类构造函数

                                }

                            实现其中的抽象方法:

                            onCreate(SQLiteDataBase db){

                                        db.execSQL(String s);    在次执行SQL语句创建表格

                                }

                            onUpgrade(SQLiteDataBase db,int oldVersion,int newVersion){}   当数据库版本号改变是调用

                                        

                                

    

四.ContentProvider 数据共享:

五.基于 Java Socket/http 的网络存储 :

版权声明:本文为博主原创文章,未经博主允许不得转载。

安卓数据存储总结及详解

前言(首先说说什么存储的几个概念) 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清...
  • qq_27280457
  • qq_27280457
  • 2016年06月30日 09:27
  • 2603

解读Android之数据存储方案

Android提供了一些永久保存数据的方法,可以根据具体的需求决定使用哪种方式存储,例如私有数据,外部程序是否可以访问等等。有以下几种方法存储:Shared Preferences;Internal ...
  • wangyongge85
  • wangyongge85
  • 2015年09月09日 08:54
  • 57716

Android网络与数据存储01

概要:这次制作App的引导页,主要用到2个知识“SharedPreferences 和 ViewPager” Genymotion的Android模拟器,版本5.1.0以下是默认root的,可以使用R...
  • xiejun188
  • xiejun188
  • 2016年08月09日 20:44
  • 295

Android数据存储几种方式用法总结

Android数据存储几种方式用法总结 1、概述   Android提供了5种方式来让用户保存持久化应用程序数据。根据自己的需求...
  • xiyiyindie
  • xiyiyindie
  • 2016年12月11日 12:16
  • 1490

实验任务8 Android数据存储和访问---书籍的增删改查

本次实验的任务是实现书籍的增删改查,其实我们可以对数据进行的操作也就无非四种,即CRUD。其中C代表添加(Create),R代表查询(Retrieve),U代表更新(Update),D代表删除(Del...
  • bzwulian
  • bzwulian
  • 2016年11月16日 21:30
  • 259

Android实验七之SQLite数据库存储

实验效果图: LogCat中打印出的数据:   代码:   MainActivity.java package com.example.sqlist; import com.example....
  • seven08290
  • seven08290
  • 2016年11月19日 18:59
  • 511

Android学习笔记十二.Android数据存储与IO.SharedPreferences

SharedPreferences     对于应用程序的数据输入、输出,如果是应用程序只是少量数据需要保存,那么使用普通文件就可以了(SharedPrefereces);但如果应用程序有大量数据需要...
  • u012637501
  • u012637501
  • 2015年01月07日 21:35
  • 1119

android的五种存储机制

Android提供了5种方式存储数据: --使用SharedPreferences存储数据; --文件存储数据;  --SQLite数据库存储数据; --使用ContentProvider存储...
  • heminghung
  • heminghung
  • 2016年05月29日 14:26
  • 831

Android 数据存储五种方式使用与总结

部分内容来源于官方文档翻译, 对SharedPreferences; 文件存储(内部存储读写,保存编译文件,保存内存缓存文件,外部存储读写); SQLite使用; ContentProvider使用;...
  • Amazing7
  • Amazing7
  • 2016年05月18日 16:06
  • 30105

Android中数据储存方式的几种工具类

一.在Android开发中数据的存储方式有五种:   1.使用SharedPreferences进行存储:      适用范围存储小量的数据,储存的格式有字符串类型及基本数据类型。一般用于存储应用程序...
  • wangyongyao1989
  • wangyongyao1989
  • 2017年04月15日 12:55
  • 475
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 数据存储
举报原因:
原因补充:

(最多只允许输入30个字)