下面给出三种方式的数据文件默认存储的位置: 数据存储方式
在DDMS里的File Explore下打开data文件夹,切换到DDMS视图,点击FileExplorer切换卡,进入到/data/data//files/目录下,可以看到文件了。 DDMS文件的导出 DDMS文件
好了,接下来分析数据存储方式了。如上图为文件存储位置,接下讲第一个文件存储。然后再接着讲SharedPreferences存储和SQLite数据库存储。 文件存储
文件存储是Android中最基本的一种存储方式,和Java中实现I/O的方式,由Context类提供openFileInput()和openFileOutput()方法打开。文件存储主要分两种存储,一种是内部存储,一种是外部存储。
内存存储:使用了FileInputStream类中的openFileInput()方法,用于读取数据;使用了FileOutputStream类中的openFileOutput()方法,用于写入数据。
外部存储:使用Enviroment类中的getExternalStorageDirectory()方法对外部存储上的文件进行读写。 简化:
FileOutputStream -> openFileOutput() FileInputStream -> openFileInput() Environment -> getExternalStorageDirectory()一,内部存储的写入文件步骤
第一, 获取文件输出流对象 FileOutputStream
第二, 使用FileOutputStream类的openFileOutput(String name, int mode)方法
第三, 调用FileOutputStream对象的write()方法写入文件
第四, 调用flush()方法,因为write()方法是写入缓冲区的,调用flush()方法将缓冲中的数据写入到文件,清空缓存
第五, close()方法用于关闭FileOutputStream 二,内部存储的读取文件步骤
第一, 获取文件输入流对象 FileInputStream
第二, 使用FileInputStream类的openFileInput()方法来实现
第三, 调用FileInputStream对象的read()方法
第四, 调用close()关闭文件输入流对象
如上分别描述了内部存储的写入文件步骤和读取文件步骤,那么接下来代码例子展示一下这些步骤。 写入数据 写入数据
在openFileOutput()方法中,接收两个参数,一个是文件名,另一个是文件的操作模式,主要有两种为 MODE_PRIVATE和MODE_APPEND。最后openFileOutput()方法会抛出FileNotFoundException。
主要代码步骤: 重要步骤 读取数据 读取数据
读取文件内容的使用代码: 读取文件 读取文件
综上,在Android中读取与写入文件的方法,和Java中实现I/O的程序是一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。通过Context.openFileOutput()获取输出流,参数分别为文件名和存储模式;通过Context.openFileInput()获取输入流,参数为文件名。 介绍了内部存储,现在介绍外部存储。
外部存储的文件时全局都是可以读的,在程序中,使用Environment类的getExternalStorageDirectory方法,来读取外部文件。 读取
最后外部存储文件,要加入读取与写入的权限,添加
READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE这样文件存储就讲得差不多了,多练习试试。对于SharePreferences存储和SQLite存储,现在进入讲解。 下面对SharedPreferences存储介绍:
SharedPreferences是一种数据存储方式,用来存储一些简单的信息,位于android.content包中,以键值对的模式进行存储,键值对(key-value)。对于存储的基本信息,如int,string,boolean,float和long。
使用getSharedPreferences()方法获取 使用getPreferences()方法获取存储 实现SharedPreferences存储步骤:
第一, 调用SharedPreferences类的edit()方法,获取SharedPreferences.Editor对象
第二, 调用一个SharedPreferences.Editor对象的putXXX()的方法获取数据
第三, 使用commit()方法提交数据 存储 存储 存储
在这里介绍完文件存储和SharedPreferences,接下来讲SQLite数据库存储。但是除了这三个,还有几种存储方式。如图: 思维导图 接下来讲讲Android中SQLite数据库的增删改查的操作。 目录 SQLite数据库存储
SQLite是一款轻量级的关系型数据库,它的运算很快,占用空间小,SQLite不仅有SQL语法支持,独立,还有数据库的ACID事务,SQLite数据库为一种嵌入式数据库。
SQLiteOpenHelper类,它是SQLiteDatabase的帮助类,用于管理数据库的创建和升级,SQLiteOpenHelper类为抽象类,有两个要重写的方法:onCreate()和onUpgrade(),用于去实现创建和升级数据库。
在SQLiteOpenHelper类中还需要一个构造方法,这个方法接收四个参数,分别为Context context,String name, CursorFactory factory,int version这四个。第一个是参数context,第二个是数据库名,第三个是自定义Cursor,一般为null,第四个为当前的数据库版本号。
在SQLiteOpenHelper类中有两个重要的实例方法,为getReadableDatabase()和getWritableDatabase()这两个方法。调用这其中的方法就能够创建数据库了。如果存在数据库就打开,没有就创建。
SQLiteOpenHelper类是一个SQLite帮助类,实现SQLite的数据操作,创建一个类去继承SQLiteOpenHelper,接下来代码示例一下。 存储 存储 存储 接下来增加数据
如何增加数据,用put()方法即可,在SQLiteDatabase中提供insert()方法,接下来也讲解一下。 增加数据 删除数据
用到的方法是delete(),第一个参数为表名,第二三位用于约束。 删除数据 更新数据
用到的方法是update()方法,参数分别为表名,ContentValues对象,约束,约束,好了,接下来示例一下。 更新数据 查询数据
用到的方法为query(),这个方法至少需要七个参数(table, columns, selection, selectionArgs, groupBy, having, orderBy),分别为表名,要查询出的名,查询条件语句,对应于selection语句中占位符的值,要分组的列名,分组后过滤条件语句,排序方式。 查询数据 cursor 升级数据库
用到onUpdate()方法,分别删除表,再次在此方法里创建即可。 升级数据库 代码: public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private static Integer Version = 1; //构造函数 public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { //必须调用父类当中的构造函数 super(context, name, factory, version); }
//context:上下文对象 //name:数据库名称 //param:factory //version:当前数据库的版本 public MySQLiteOpenHelper(Context context,String name,int version){ this(context,name,null,version); }
public MySQLiteOpenHelper(Context context,String name){ this(context, name, Version); } //创建的时候被调用 @Override public void onCreate(SQLiteDatabase db) { //创建了数据库并创建一个的表 String sql = “create table sut(id int primary key,name varchar(200))”; db.execSQL(sql); } //数据库升级时调用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println(“更新版本为:”+newVersion); } }