Android 数据存储

数据存储是每个项目必备技能,在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供者(Content provider)和网络。对于内容提供者使用方面比较少,因此这里就不做介绍了,下面介绍其它四个比较常用的存储方式。

haredPreferences是android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据。

1、使用SharedPreferences保存数据方法如下:

//实例化SharedPreferences对象(第一步)

SharedPreferences mySharedPreferences= getSharedPreferences("test",

Activity.MODE_PRIVATE);

//实例化SharedPreferences.Editor对象(第二步)

SharedPreferences.Editor editor = mySharedPreferences.edit();

//用putString的方法保存数据

editor.putString("name", "Karl");

editor.putString("habit", "sleep");

//提交当前数据

editor.commit();

2、使用SharedPreferences读取数据方法如下:

//同样,在读取SharedPreferences数据前要实例化出一个SharedPreferences对象

SharedPreferencessharedPreferences= getSharedPreferences("test",

Activity.MODE_PRIVATE);

// 使用getString方法获得value,注意第2个参数是value的默认值

String name =sharedPreferences.getString("name", "");

String habit =sharedPreferences.getString("habit", "");

文件存储:

Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件。在默认状态下,文件是不能在不同程序间共享的。当用户卸载您的应用程序时,这些文件删除。文件存储数据可以通过openFileOutput方法打开一个文件(如果这个)文件不存在就自动创建这个文件),通过load方法来获取文件中的数据,通过deleteFile方法删除一个指定的文件。

File是通过FileInputStream和FileOutputStream对文件进行操作。

Context提供了如下两个方法来打开本应用程序的数据文件将爱丽的文件IO流。

FileInputStream openFileInput(String name):

打开应用程序的数据文件夹下的name文件对应输入流。

FileOutputStream openFileOutput(String name,int mode):

打开应用程序的数据文件夹下的name文件对应输出流。

参数:mode  指定打开文件的模式,该模式支持如下值:

MODE_PRIVATE :该文件只能被当前程序读写。

MODE_APPEND:以追加方式打开该文件,应用程序可以向该文件中追加内容。

MODE_WORLD_READABLE:该文件的内容可以被其他应用程序读取。

MODE_WORLD_WRITEABLE:该文件的内容可由其他程序读、写。

//读取的内容会随着文件的改变而改变

try{

//读取的是字节流

InputStream is=getResources().getAssets().open("info.txt");

//UTF-8编码的指定是很重要的

InputStreamReader isr=newInputStreamReader(is,"UTF-8");

BufferedReader bfr=newBufferedReader(isr);

String in="";

while((in=bfr.readLine())!=null)

{

Log.i(TAG, in);

}

//                    Log.i(TAG, bfr.readLine());

}catch(IOException e) {

e.printStackTrace();

}


try{

//将文件数据写到应用的内部存储

/*

* 注意:获取流的方式通过openFileInput函数,指定文件名以及后缀

* 参数1.文件名和后缀        2.文件模式

* 保存在手机data/data/包名/files

* */

FileOutputStream fos=openFileOutput(fileName, Context.MODE_PRIVATE);

OutputStreamWriter osw=newOutputStreamWriter(fos,"UTF-8");

osw.write(et.getText().toString());

//保证输出缓冲区中的所有内容

osw.flush();

fos.flush();

//后打开的先关闭,逐层向内关闭

fos.close();

osw.close();

Toast.makeText(MainActivity.this,"写入完成", Toast.LENGTH_LONG).show();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

数据库:

Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。对于熟悉 SQL 的开发人员来时,在 Android 开发中使用 SQLite 相当简单。但是,由于 JDBC 会消耗太多的系统资源,所以 JDBC 对于手机这种内存受限设备来说并不合适。因此,Android 提供了一些新的 API 来使用 SQLite 数据库,Android 开发中,程序员需要学使用这些 API。

publicclassDatabaseHelperextendsSQLiteOpenHelper {

DatabaseHelper(Context context, String name, CursorFactory cursorFactory,intversion)

{

super(context, name, cursorFactory, version);

}

@Override

publicvoidonCreate(SQLiteDatabase db) {

// TODO 创建数据库后,对数据库的操作

}

@Override

publicvoidonUpgrade(SQLiteDatabase db,intoldVersion,intnewVersion) {

// TODO 更改数据库版本的操作

}

@Override

publicvoidonOpen(SQLiteDatabase db) {

super.onOpen(db);

// TODO 每次成功打开数据库后首先被执行

}

}

网络:

可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中。用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法。简单说也就是自己项目中网络请求时所做的事情,进行数据上传,数据获取然后解析,这里推荐一下我的Json数据解析

http://blog.csdn.NET/greatdaocaoren/article/details/73826711

其实在实际项目中,根据自己的需要自己的目标而制定自己的数据存储方式,这里只是简单介绍一下,具体还是得根据项目来,下面给出demo,不懂的可以下载运行和查看代码:

http://download.csdn.net/detail/greatdaocaoren/9913670

csdn项目地址:http://blog.csdn.net/greatdaocaoren/article/details/76252514

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容