android-数据持久化存储

1.数据持久化存储

android提供了4种文件存储方式:文件(/data/data/<包名>/files/),SharePreference(/data/data/<包名>/shared prefs/) ,
   SQLite数据库(/data/data/<包名>/database/)和Content Provider

android采用了“java.io.*”库来提供输入输出(I/O)接口,所有文件以流的形式进行读/写。

2.文件存储

在context类下有openFileOutput(String name,int mode),openFileInput(String name)

方法对文件进行写或读。name表示文件的名字,不包括路径,已经默认路径为该应用程序的包下

data/data/<包名>/files/目录下,当文件不存在时,则创建并放在默认的路径下,有FileNotFoundException异常会抛出。

mode的取值为context类的常量值,如下:

MODE_PRIVATE:表示该文件只能被本应用访问

MODE  APPEND_:  表示新的内容会添加到原文件内容的后面

 MODE_WORLD_READABLE:表示该文件能被所有应用读取

 MODE_WORLD_WRITEABLE:表示该文件能被所有应用写入

2.1读取资源文件

     android上的应用可以读取资源文件的内容。资源文件必须存储在项目的res/raw/目录下。

      Activity可以通过getResources()方法获取Resources类对象。

     Resources类提供了openRawResource(int id)方法读取res/raw/目录下的文件,id是指该文件在R.java中生成对应的id值。

      将通过InputStream读取流读取的数据放入ByteArrayOutputStream流内。因为该字节数组输出流的数据被写入一个 byte 数组。

缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。 关闭 ByteArrayOutputStream 无效。

此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException即可以能够读取任意长度的文件里的内容。

3.SharedPreferences

  Preference是一种轻量级的键值存储方式,可以用它来持久保存一些变量的值,这些变量必须是基本数据类型的,

  它存储的数据保存在一个xml文件里,该xml文件存储在/data/data/<包名>/shared prefs/目录下可以通过,

  SharedPreferences对preference存储的数据操作,它可以通过Context类的getSharedPreferences(String name,int type)

  方法获取唯一一个SharedPreferences对象。同一个应用只有唯一的SharedPreferences对象,其记录文件(xml文件)可以被

  同一应用下的不同Activity共享,type有默认值:MODE_PRIVATE。

 注意:getSharedPreferences(String name,int type)后将会在/data/data/<包名>/shared prefs/下以type模式自动创建一个名为“name”的xml文件。

  写操作:

   SharedPreferencesEditor edit();//由SharedPreferences对象的该方法获取Editor,它负责写操作。

  Editor常用方法:

       putString (String name,String value);//

       clear();//清除键值

remove(String key)

commit();//该方法最后必须有,它执行数据改变确认的工作。

读操作:

SharedPreferences对象的getString(String name,String value);//value为如果没有get到值,则默认返回该值。

时间: 2024-08-10 02:21:03

android-数据持久化存储的相关文章

Android数据持久化存储

Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentProvider属于android四大组件之一,所以它的数据存储方式在介绍四大组件的时候说明. 1.文件存储 文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据. 文件存储有两种方式,一是存储到手机内存中(memor

饿了么开源项目:便捷高效的Android数据持久化存储框架

版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/51436972 Android应用开发时经常要对许多数据进行持久化存储,便于以后访问. 对于int.double.boolean这些基本数据,可以使用SharedPreference.对于一些对象,往SharedPreference里存储的时候需要使用序列化技术.如果对象很大,或者碰到列表.数组等结构,就必须使用数据库.而使用数据库比较麻烦,成

数据持久化存储

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法之前,有必要说明以下沙盒机制.iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”. 1.结构 既然沙盒就是一个文件夹,那就看看里面有什么吧.沙盒的目

iOS数据持久化存储

本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每个客户端软件都需要做的.简单如"是否第一次打开"的BOOL值,大到游戏的进度和状态等数据,都需要进行本地持久化存储.这些数据的存储本质上就是写磁盘存文件,原始一点可以用iOS本身支持有NSFileManager这样的API,或者干脆C语言fwrite/fread,Cocoa Touch本身

Swift - 使用Core Data进行数据持久化存储

一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象. 2,虽然其底层也是由类似于SQL的技术来实现,但我们不需要编写任何SQL语句,有点像Java开发中的Hibernate持久化框架 3,Core Data数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型. 4,与SQLite区别:只能取出整个实体记录,然后分解,

iOS开发之数据持久化存储

概论 数据持久化存储:所谓持久化存储就是将数据保存到硬盘中,使得应用程序或者机器在重启后可以访问之前保存的数据. 常见方式: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite3(数据库) CoreData(苹果基于数据库封装的持久化存储工具,这种方式效率不高,因为会帮我们动态生成很多重复的代码,我只有写XMPP的时候会用一下,因为XMPP里面的存储用的就是CoreData) 沙盒 说到持久化存储就不得不说一下苹果的沙盒机制,苹果的

redis的数据持久化存储

redis的数据持久化存储 Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式: 一.snapshotting(快照)方式快照是默认的持久化方式.这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb.我们可以配置redis在n秒内如果超过若干个key被修改就自动做快照持久保存. 在约87行,有默认的快照策略(指定在多长时间内,有多少次更新操作,就将数据同步到数据快照文件,可以多个条件

[Xcode10 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据

本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //引入数据持久化存储框架[CoreData] 3 import CoreData 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup a

python 基础之数据持久化存储

###数据持久化存储 - 说明:持久化存储方案,普通文件.数据库.序列化 - 示例: ```python import pickle class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return 'name:{} age:{}'.format(self.name, self.age) xiaoming = Person('xiaoming', 20) #

Android开发之数据持久化存储二

一.目标 以QQ登陆为例,继续完成昨天没有完成的任务,实现数据的存储和回显读取,并且学会往SD卡内存储信息 二.源程序代码 package com.example.qq_logindemo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.Vie