Android中数据的存储和访问

本文详细介绍了Android中数据存储的几种方式,包括文件存储、SharedPreferences、SQLite数据库和Content Provider的使用。文件存储可以使用openFileOutput()进行操作,SQLite用于结构化数据,SharedPreferences适合保存偏好设置。Content Provider作为数据共享机制,允许不同应用间的数据交互。
摘要由CSDN通过智能技术生成

数据存储的位置有两个:手机自带的存储空间(电脑的自带硬盘)和外存储设备(sdcard,移动硬盘,也有可能是固定在手机内部,用usb链接电脑后可以看到的存储设备)

当使用context的openFileOutput()来保存文件时,文件会被保存在手机自带的存储空间中,而且根据保存时操作模式的不同而权限不同。手机自带的存储空间通常较小,适合存放一些小的文件。大的文件通常存放在SDCard中,保存在SDCard中的文件是其他应用都能访问的。

SDCard使用方法:

第一步:添加SDCard使用权限

第二步:判断SDCard是否可用Environment.getExternalStorageState();

                   需要判断两个状态 是否安装了SDCard(MEDIA_MOUNTED);是否有写保护(MEDIA_MOUNTED_READONLY)

第三步:保存文件

File file = new File(“/mnt/sdcard”,filename);

FileOutputStream outStream = newFileOutputStream(file);

outStream.write(content.getBytes());

outStream.close();

在SDCard中创建文件时,文件目录通过Environment.getExternalStorageDirectory()获得可以屏蔽掉一些版本的差异。

 

数据存储的方式有五种:

1.      文件

实际上是用javaSE中的IO技术

1)  通过上下文对象context快速得到文件输出流对象

FileOutputStreamoutStream=context.openFileOutput(filename,mode);

outStream.write(str.getBytes());

Filename:输出流所写文件的文件名

Mode:权限控制及写入方式(追加,覆盖…)

eg:context.MODE_PRIVATE,私有操作模式:创建出来的文件只能被本应用使用,其他应用无法访问该文件,并且以覆盖方式写入

          因为是字节输出流,所以要将写入内容转换成字节

         通过这种方式,文件会被保存在data/data/packagename/files文件夹下面

2)  通过上下文对象context快速得到文件输出流对象

FileInputStream inStream=context.openFileInput(filename);

ByteArrayOutputStream outStream=new ByteArrayOutputStream();//字节数组输出流对象,用来缓存字节数组在内存中

Byte []buffer=new byte[1024];

While((len=inStream.read(buffer))!=-1)//读到文件结尾时read方法返回-1

{

            outStream.write(buffer,0, len);

}

Byte [] data = outStream.toByteArray();

3)  创建文件时所使用的操作模式

Context.MODE_PRIVATE:默认操作模式,如上述。

Context.MODE_APPEND:追加操作模式,检查文件是否存在,存在就往文件末尾追加内容;若不存在ÿ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值