Android数据存储五种方式总结(DOC)
第五章android数据存储

android数据存储1.xml数据存储SharedPreferences存储数据:底层是用xml方式来保留,适合保留简单的数据,文件是保留在/data/data/应用程序主包/shared_prefs目录下1)取得SharedPreferences:/** SharedPreferences getSharedPreferences(String name, int mode)* 参数:* name:xml文件名字,后辍会主动加上.xml* mode:操作xml的模式,有以下几种:* 1)0 或Context.MODE_PRIVATE是默许操作,表示只有创建文件的程序对该目标可读可写* 2)Context.MODE_APPEND:表示追加数据* 3)Context.MODE_WORLD_READABLE:全局读,除创建文件的程序对该目标可读可写之外,其它程序能够对该文件进行读操作* 4)Context.MODE_WORLD_WRITEABLE:全局写,除创建文件的程序对该目标可读可写之外,其它程序能够对该文件进行写操作* 注意:关于xml简单数据存储,Context.MODE_PRIVATE和Context.MODE_APPEND成效是一样的,而后面的io文件存储成效那么不同*/SharedPreferences sp = this.getSharedPreferences("user",Context.MODE_WORLD_READABLE);2)增加或更新数据:SharedPreferences sp = this.getSharedPreferences("user",Context.MODE_WORLD_READABLE);//xml文件编辑器Editor editor = sp.edit();editor.putString("user", user);editor.putString("password", password);//需要提交editormit();3)读取数据:SharedPreferences sp = this.getSharedPreferences("user",Activity.MODE_PRIVATE);String user = sp.getString("user", "没有user变量");String password = sp.getString("password", "没有password变量");4)清空数据:SharedPreferences sp = this.getSharedPreferences("user",Context.MODE_WORLD_READABLE);//xml文件编辑器Editor editor = sp.edit();editor.clear();//需要提交editormit();PreferenceActivity:专门用来实现程序设置界面及参数存储的一个ActivityPreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置题目。
Android中5种数据存储方式

Android中5种数据存储方式1概述SharedPreferences存储数据。
ContentProvider存储文件存储SQLlite存储网络存储Preference,File,DataBase这三种方式分别对应的目录是:●/data/data/Package Name/Shared_Pref●/data/data/Package Name/files●/data/data/Package Name/database关于这五种数据存储方式,根据实际情况选择最合适的,秉持最简单原则,也就是说能用简单的方式处理,就不要用复杂的方式。
比如存储几个数据或简单对象,用SharedPreference也能做到,就没必要写个ContentProvider。
●简单数据和配置信息,SharedPreference是首选;●如果SharedPreferences不够用,那么就创建一个数据库;●结构化数据,一定要创建数据库,虽然这稍显烦锁,但是好处无穷;●文件就是用来存储文件(也即非配置信息或结构化数据),如文本文件,二进制文件,PC文件,多媒体文件,下载的文件等等;●尽量不要创建文件;●如果创建文件,如果是私密文件或是重要文件,就存储在内部存储,否则放到外部存储。
2SharedPreferences存储数据SharedPreferences 可以将数据保存到应用程序的私有存储区,这些存储区中的数据只能被写入这些数据的软件读取。
它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
其存储位置在/data/data/<包名>/shared_prefs 目录下。
使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。
例如:登录用户的用户名与密码。
步骤如下:(1)使用Activity类的getSharedPreference 方法获得SharePreferences对象。
Android中数据存储方式

1. sharedPreferences类似于存储window下的配置文件(.ini),sharedPreferences中存储的信息都是以键值对的形式存储<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map><string name="键名">键值</string><string name="username">ffppp</string></map>用sharedPreferences存储信息只能是基础数据类型 如:int/float/string/stringSet/Long/booleanSharedPreferences生成的存储文件路径:(默认保存名字为当前Activity.xml)data/data/包名/shared_prefs/Activity.xml2. 利用SharedPreferred进行数据存储步骤:向SharedPreferred中写入数据1)获得SharedPreferences.Editor对象SharedPreferences.Editor editor =getPreferences(MODE_PRIVATE).edit();2)利用editor对象的putXX方法向editor中以键值对的形式存储信息(注意:存储基本数据类型数据)editor.putString("键名", 值);editor.putString("password",password.getText().toString());3)当editor信息存储完成后,提交,此时会在对应文件夹下生产.xml文件(用此种方式生产的xml文件名默认是Activity.xml)mit();-生成.xml文件读取SharedPreferred中数据1)获得SharedPreferred对象SharedPreferences sp =getPreferences(MODE_PRIVATE);2)通过SharedPreferred的对象的getXX(“键名”,默认值)的方法可以取出存在.xml文件中的对应信息sp.getString("username", "");如果想自定义生产的xml文件名,可以在获得SharedPreferences.Editor对象时利用如下方法:SharedPreferences.Editor editor =getSharedPreferences("a",MODE_PRIVATE).edit();此时存储的文件名为a.xml对应着在读取SharedPreferred中数据时,获得SharedPreferred对象利用如下方法(a为存储文件名,0为文件操作模式)SharedPreferences sp =getSharedPreferences(“a”,0);文件的操作模式• Context.MODE_PRIVATE:默认模式,在那里创建的文件只能由应用程序调用,即为私有的,值为0。
Android数据存储(Data Storage)

Android提供几种保存持久化应用程序数据的选择。
依赖具体的需求来选择解决适合的方案,如数据应该是应用程序私有的还是共享的,以及数据所需要的存储空间等。
以下是可选择的数据存储方案:共享偏好(Shared Preferences)用键---值对的形式保存私有的原始数据。
内部存储(Internal Storage)在设备的内存上保存私有的数据。
外部存储(External Storage)在共享的外部存储器上保存公共的数据。
SQLite数据库在私有的数据库中保存结构化的数据。
网络连接(Network Connection)把数据保存在自己的互联网服务器上。
Android提供了内容提供器(content provider),能够你的私有数据公开给其他应用程序。
内容提供器是一种公开应用程序数据的读写访问权限的可选组件,这种读写访问会受到你所施加的任何限制的影响。
使用共享偏好SharedPreference类提供了一个一般性的框架,它允许用原始类型数据的键---值对的形式来保存和获取持久化的数据。
使用SharedPreference能够保存任意类型的原始类型数据:布尔型、浮点型、整数型、以及字符串。
这种数据会跨越用户的会话周期被持久化保存(即使是应用程序进程被杀死)。
有两种方法来为应用程序获取SharedPreferences对象:1.getSharedPreferences()方法---如果需要多个用名称来标识的偏好文件,就要使用这个方法,它的第一个参数要指定偏好文件的名称。
2.getPreferences()方法---如果仅需要针对Activity的一个偏好文件,就使用这个方法。
因为这个方法仅返回当前Activity的偏好文件,不需要提供偏好文件的名称。
以下是向偏好文件中写入数据的方法:1.调用edit()方法来获取一个SharedPreferences.Editor对象;2.调用诸如putBoolean()和putString()等方法来添加要保存的值;3.调用commit()方法来提交要保存的新值。
Android数据存储五种方式总结(DOC)

Android数据存储五种方式总结本文介绍Android平台进行数据存储的五大方式,分别如下:1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 网络存储数据下面详细讲解这五种方式的特点第一种:使用SharedPreferences存储数据适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。
比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/<package name>/shared_prefs目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor 对象实现。
SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写Editor有如下主要重要方法:SharedPreferences.Editor clear():清空SharedPreferences里所有数据SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据SharedPreferences.Editor remove():删除SharedPreferences中指定key对应的数据项boolean commit():当Editor编辑完成后,使用该方法提交修改实际案例:运行界面如下这里只提供了两个按钮和一个输入文本框,布局简单,故在此不给出界面布局文件了,程序核心代码如下:class ViewOcl implements View.OnClickListener{@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.btnSet://步骤1:获取输入值String code = txtCode.getText().toString().trim();//步骤2-1:创建一个SharedPreferences.Editor接口对象,lock表示要写入的XML 文件名,MODE_WORLD_WRITEABLE写操作SharedPreferences.Editor editor = getSharedPreferences("lock",MODE_WORLD_WRITEABLE).edit();//步骤2-2:将获取过来的值放入文件editor.putString("code", code);//步骤3:提交mit();Toast.makeText(getApplicationContext(),"口令设置成功",Toast.LENGTH_LONG).show();break;case R.id.btnGet://步骤1:创建一个SharedPreferences接口对象SharedPreferences read = getSharedPreferences("lock",MODE_WORLD_READABLE);//步骤2:获取文件中的值String value = read.getString("code", "");Toast.makeText(getApplicationContext(),"口令为:"+value,Toast.LENGTH_LONG).show();break;}}}读写其他应用的SharedPreferences: 步骤如下1、在创建SharedPreferences时,指定MODE_WORLD_READABLE模式,表明该SharedPreferences数据可以被其他程序读取2、创建其他应用程序对应的Context:Context pvCount = createPackageContext("com.tony.app", Context.CONTEXT_IGNORE_SECURITY);这里的com.tony.app就是其他程序的包名3、使用其他程序的Context获取对应的SharedPreferencesSharedPreferences read = pvCount.getSharedPreferences("lock", Context.MODE_WORLD_READABLE);4、如果是写入数据,使用Editor接口即可,所有其他操作均和前面一致。
数据存储方式

数据存储的几种方式:总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。
其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式;数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等;网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理。
对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络。
但从开发者的角度来讲它可以分为以下五种方式: 1.SharedPreferences共享偏好2.Internal Storage内部存储空间3.External Storage外部存储空间4.SQLite Database数据库5.Internet网络这几种方式各自有各自的优点和缺点,要根据不同的实际情况来选择,而无法给出统一的标准。
下面就各种方式谈谈它们的优缺点,以及最合适的使用情况:1.Shared Preferences共享偏好SharedPreferences是用来存储一些Key/Value类似的成对的基本数据类型,注意,它只能存储基本数据类型,也即int, long, boolean, String, float。
事实上它完全相当于一个HashMap,唯一不同的就是HashMap中的Value可以是任何对象,而SharedPreferences中的值只能存储基本数据类型(primitive types)。
对于它的使用方法,可以参考Android Developer Guide,这里不重复。
如此来看,最适合SharedPreferences的地方就是保存配置信息,因为很多配置信息都是Key/Value。
事实上,在Android当中SharedPreferences使用最多的地方也是用来保存配置(Settings)信息,系统中的Settings中这样,各个应用中的Settings也是这样。
Android的数据存储报告

{ 项目名称} Android的数据存储报告XXXXXXX信息工程中心嵌入式与RFID实验室版本历史目录0. 文档介绍 (4)0.1文档目的 (4)0.2文档范围 (4)0.3读者对象 (4)0.4参考文献 (4)0.5术语与缩写解释 (4)1. 系统环境 (5)2. ANDROID的数据存储 (5)2.1A NDROID的数据存储方式 (5)2.2使用S HARED P REFERENCES存储数据; (5)2.3文件存储数据 (7)2.4网络存储数据 (9)3. SQLITE数据库存储存储 (9)3.1SQ LITE的特点 (9)3.2与其相关的函数 (10)3.3对数据库进行操作的方法 (11)3.4对数据库进行操作的例子 (14)4. 使用CONTENTPROVIDER 存储数据 (18)4.1C ONTENT P ROVIDER简介 (18)4.2U RI类简介 (18)4.3U RI M ATCHER、C ONTENT U RIST和C ONTENT R ESOLVER简介 (18)4.4C ONTENT P ROVIDER示例程序 (19)5. 总结 (23)0. 文档介绍0.1 文档目的本文档主要是介绍Android的数据存储,作者希望通过本文档的介绍能使读者对Android 的数据存储有所了解,并通过详尽实例的讲解,使读者加深对数据存储的理解和运用。
0.2 文档范围本文档主要用于Android的数据存储,本文主要从以下几个方面来介绍:什么是数据的存储、数据存储的分类以及各个分类的详细介绍,还有一些简单的实例等。
0.3 读者对象本文适合于对And发有兴趣的读者,还有想要研究Android系统下数据存储的读者,文档涉及到Android系统,因此还是要求读者对其具有一些roid系统开基本概念,例如,关于JAVA API中关于数据库概念的理解和关于Android中有关数据存储等的理解等。
Android五种数据存储方式

Android五种数据存储⽅式android 五种数据存储:SharePreferences、SQLite、Contert Provider、File、⽹络存储Android系统提供了四种存储数据⽅式。
分别为:SharePreference、SQLite、Content Provider和File。
但由于Android系统中,数据基本是私有的,都是存放于”data/data”程序包名⽬录下,所以要实现数据共享,正确⽅式是使⽤Content ProviderSQLite:SQLite是⼀个轻量级的数据库,⽀持基本的SQL语法,是常被采⽤的⼀种数据存储⽅式。
Android为此数据库提供了⼀个名为SQLiteDatabase的类,封装了⼀些操作数据库的apiSharedPreference:除SQLite数据库外,另⼀种常⽤的数据存储⽅式,其本质就是⼀个xml⽂件,常⽤于存储较简单的参数设置。
File:即常说的⽂件(I/O)存储⽅法,常⽤语存储⼤数量的数据,但是缺点是更新数据将是⼀件困难的事情。
ContentProvider: Android系统中能实现所有应⽤程序共享的⼀种数据存储⽅式,由于数据通常在各应⽤间的是互相私密的,所以此存储⽅式较少使⽤,但是其⼜是必不可少的⼀种存储⽅式。
例如⾳频,视频,图⽚和通讯录,⼀般都可以采⽤此种⽅式进⾏存储。
每个Content Provider都会对外提供⼀个公共的URI(包装成Uri对象),如果应⽤程序有数据需要共享时,就需要使⽤Content Provider为这些数据定义⼀个URI,然后其他的应⽤程序就通过Content Provider传⼊这个URI来对数据进⾏操作。
URI由3个部分组成:"content://"、数据的路径、标识ID(可选)。
1)SQLite数据存储======================================================================SQLite是⼀种转为嵌⼊式设备设计的轻型数据库,其只有五种数据类型,分别为:NULL:空值INTEGER:整数REAL:浮点数TEXT:字符串BLOB:⼤数据在SQLite中,并没有专门设计BOOLEAN和DATE类型,因为BOOLEAN型可以⽤INTEGER的0和1代替true和false,⽽DATE类型则可以拥有特定格式的TEXT、REAL和INTEGER的值来代替显⽰,为了能⽅便的操作DATE类型,SQLite提供了⼀组函数,在Android系统中提供了anroid.database.sqlite包,⽤于进⾏SQLite数据库的增,删,改,查⼯作,其主要⽅法如下: beginTransaction(): 开始⼀个事务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android数据存储五种方式总结本文介绍Android平台进行数据存储的五大方式,分别如下:1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 网络存储数据下面详细讲解这五种方式的特点第一种:使用SharedPreferences存储数据适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。
比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/<package name>/shared_prefs目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor 对象实现。
SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写。
Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写。
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,写Editor有如下主要重要方法:SharedPreferences.Editor clear():清空SharedPreferences里所有数据SharedPreferences.Editor putXxx(String key , xxx value):向SharedPreferences存入指定key对应的数据,其中xxx 可以是boolean,float,int等各种基本类型据SharedPreferences.Editor remove():删除SharedPreferences中指定key对应的数据项boolean commit():当Editor编辑完成后,使用该方法提交修改实际案例:运行界面如下这里只提供了两个按钮和一个输入文本框,布局简单,故在此不给出界面布局文件了,程序核心代码如下:class ViewOcl implements View.OnClickListener{@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.btnSet://步骤1:获取输入值String code = txtCode.getText().toString().trim();//步骤2-1:创建一个SharedPreferences.Editor接口对象,lock表示要写入的XML 文件名,MODE_WORLD_WRITEABLE写操作SharedPreferences.Editor editor = getSharedPreferences("lock",MODE_WORLD_WRITEABLE).edit();//步骤2-2:将获取过来的值放入文件editor.putString("code", code);//步骤3:提交mit();Toast.makeText(getApplicationContext(),"口令设置成功",Toast.LENGTH_LONG).show();break;case R.id.btnGet://步骤1:创建一个SharedPreferences接口对象SharedPreferences read = getSharedPreferences("lock",MODE_WORLD_READABLE);//步骤2:获取文件中的值String value = read.getString("code", "");Toast.makeText(getApplicationContext(),"口令为:"+value,Toast.LENGTH_LONG).show();break;}}}读写其他应用的SharedPreferences: 步骤如下1、在创建SharedPreferences时,指定MODE_WORLD_READABLE模式,表明该SharedPreferences数据可以被其他程序读取2、创建其他应用程序对应的Context:Context pvCount = createPackageContext("com.tony.app",Context.CONTEXT_IGNORE_SECURITY);这里的com.tony.app就是其他程序的包名3、使用其他程序的Context获取对应的SharedPreferencesSharedPreferences read = pvCount.getSharedPreferences("lock", Context.MODE_WORLD_READABLE);4、如果是写入数据,使用Editor接口即可,所有其他操作均和前面一致。
SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。
但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。
所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
第二种:文件存储数据核心原理: Context提供了两个方法来打开数据文件里的文件IO流FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数用于指定文件名,第二个参数指定打开文件的模式。
具体有以下值可选:MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。
可以使用Context.MODE_APPENDMODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
除此之外,Context还提供了如下几个重要的方法:getDir(String name , int mode):在应用程序的数据文件夹下获取或者创建name对应的子目录File getFilesDir():获取该应用程序的数据文件夹得绝对路径String[] fileList():返回该应用数据文件夹的全部文件实际案例:界面沿用上图核心代码如下:public String read() {try {FileInputStream inStream= this.openFileInput("message.txt");byte[] buffer = new byte[1024];int hasRead = 0;StringBuilder sb= new StringBuilder();while ((hasRead = inStream.read(buffer)) != -1) {sb.append(new String(buffer, 0, hasRead));}inStream.close();return sb.toString();}catch (Exception e) {e.printStackTrace();}return null;}public void write(String msg){//步骤1:获取输入值if(msg == null) return;try {//步骤2:创建一个FileOutputStream对象,MODE_APPEND追加模式FileOutputStream fos = openFileOutput("message.txt",MODE_APPEND);//步骤3:将获取过来的值放入文件fos.write(msg.getBytes());//步骤4:关闭数据流fos.close();}catch (Exception e) {e.printStackTrace();}}openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/”,如果文件不存在,Android 会自动创建它。
创建的文件保存在/data/data/<packagename>/files目录,如:/data/data/cn.tony.app/files/message.txt,下面讲解某些特殊文件读写需要注意的地方:读写sdcard上的文件其中读写步骤按如下进行:1、调用Environment的getExternalStorageState()方法判断手机上是否插了sd卡,且应用程序具有读写SD卡的权限,如下代码将返回trueEnvironment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)2、调用Environment.getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录,或者使用"/mnt/sdcard/"目录3、使用IO流操作SD卡上的文件注意点:手机应该已插入SD卡,对于模拟器而言,可通过mksdcard命令来创建虚拟存储卡必须在AndroidManifest.xml上配置读写SD卡的权限<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>案例代码://文件写操作函数private void write(String content) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//如果sdcard存在File file = new File(Environment.getExternalStorageDirectory().toString()+ File.separator+ DIR+ File.separator+ FILENAME); //定义File类对象if (!file.getParentFile().exists()) { //父文件夹不存在file.getParentFile().mkdirs(); //创建文件夹}PrintStream out= null; //打印流对象用于输出try {out= new PrintStream(new FileOutputStream(file, true)); //追加文件out.println(content);}catch (Exception e) {e.printStackTrace();}finally {if (out != null) {out.close();//关闭打印流}}}else { //SDCard不存在,使用Toast提示用户Toast.makeText(this, "保存失败,SD卡不存在!", Toast.LENGTH_LONG).show();}}//文件读操作函数private String read() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {//如果sdcard存在File file = new File(Environment.getExternalStorageDirectory().toString()+ File.separator+ DIR+ File.separator+ FILENAME); //定义File类对象if (!file.getParentFile().exists()) { //父文件夹不存在file.getParentFile().mkdirs(); //创建文件夹}Scanner scan= null; //扫描输入StringBuilder sb = new StringBuilder();try {scan= new Scanner(new FileInputStream(file)); //实例化Scannerwhile (scan.hasNext()) { //循环读取sb.append(scan.next() + "\n"); //设置文本}return sb.toString();}catch (Exception e) {e.printStackTrace();}finally {if (scan != null) {scan.close();//关闭打印流}}}else { //SDCard不存在,使用Toast提示用户Toast.makeText(this, "读取失败,SD卡不存在!", Toast.LENGTH_LONG).show();}return null;}第三种:SQLite存储数据SQLite是轻量级嵌入式数据库引擎,它支持SQL 语言,并且只利用很少的内存就有很好的性能。