Andorid Studio学习笔记--数据存储

前言

Android平台提供了5种数据存储方式

  • 文件存储:在Android中读取/写入文件的的方法与JAVA中实现I/O程序是完全一样的,提供了openFileput()和openFileOutput()方法读取设备上文件,可以用来存储大数据,如文本,图片,音频等。
  • SharePreferences:Android提供用来存储一些简单的配置信息的一种机制,采用XML格式存储数据到设备中,一般用来存储应用程序的各种配置信息,如用户名,密码等。
  • SQLite数据库:Android自带的一个轻量级的数据库,支持基本SQL语法,一般用作复杂数据的存储引擎,可以存储用户信息。
  • ContentProvider:Android四大组件之一,主要用于应用程序之间的数据交换,可以把自己的数据共享给其他应用程序使用
  • 网络存储:需要与Android网络数据包打交道,将数据存储到服务器上,通过网络提供的存储空间来存储/获取信息

文件存储

文件存储是Android最基本的数据存储方式,与JAVA中的文件存储类似,都是通过I/O流的形式把数据存储到文件中。文件存储分为内部存储外部存储

内部存储

内部存储是指应用程序中的数据是以文件方式存储在设备内部中(该文件默认位于“data/data//files/”目录下)。内部存储的文件被所创建的应用程序私有,其他应用程序想操作需要设置权限。内部存储的文件会跟随创建的应用程序卸载而删除

数据存储

存储数据采用Context提供的openFileOutput(),该方法用于打开文件的输出流,将数据存储到指定文件中。通过该方法可以获取FileOutputStream对象。
方法原型:

FileOutputStream fos = openFileOutput(String name , int mode); 

"name"表示文件名,”mode“表示文件的操作模式

  • MODE_PRIVATE:该文件只能被当前程序读写
  • MODE_APPEND:该内容可以追加
  • MODE_WORLD_READABLE:该文件内容可以被其他程序读
  • MODE_WORLE_WRITEABLE:该文件内容可以被其他程序写
    默认情况下应用程序创建的文件都是私有的。

存储数据的示例代码:

String saveInfo=et_info.getText().toString().trim();    //把从et_info这个组件中获取的数据转化成字符串类型存入saveInfo变量中
FileOutputStream fos = context.openFileOutput("data.txt",Context.MODE_PRIVATE); //打开data.txt文件的输出流,打开模式为私有
fos.write(saveInfo.getBytes());   //把字符串saveInfo变成字节数组通过输出流写入到数据文件中
fos.close();    //关闭输出流

读取数据

取出数据时,使用FileInputStream对象读取数据,采用Context提供的openFileInput(),该方法用于打开文件的输入流,将数据读取出来
方法原型为

FileInputStream fis = openFileInput(String name);

"name"表示文件名
读取数据示例代码:

FileInputStream fis = context.openFileInput("data.txt");    //获取文件输入流对象
byte[] buffer = new byte [fis.available()];                //创建缓存区,并获取文件长度
fis.read(buffer);                                          //将文件内容读取到buffer缓存区中
String context = new String(buffer);                       //将buffer中的内容转换成字符串存到context中
fis.close();                                               //关闭输入流

外部存储

外部存储是指将文件存储到一些外部设备上,例如SD卡或设备内嵌的存储卡,属于永久性存储方式(该文件通常位于mnt/sdcard目录下,不同厂商生产的手机路径可能会不同)。外部存储的文件可以被其他应用程序所共享。由于外部存储设备可能被移除等情况,使用外部设备前必须使用Environment.getExternalStorageState()方法来确认外部设备是否可用,当外部设备可用并且具有读写权限时,可以通过FileInputStream(),FileOutputStream()对象来读写外部设备中的文件。

向外部设备(SD卡)存储数据代码示例

String state = Environment.getExternalStorageState();   //获取外部设备
if(state.equals(Environment.MEDIA_MOUNTED)){            //判断外部设备是否可用
	File SDPath = Environment.getExternalStorageDirectory();      //获取SD卡目录
	File file = new FileSDPath , "data.txt";                  //在SDPath路径下创建data.txt文件
	String data = "hello";
	FileOutputStream fos = new FileOutputStream(file);            //打开文件的输出流
	fos.write(data.getBytes());                                   //写入数据
	fos.close;                                                    //关闭文件输出流
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值