SD卡相关操作

android中(数据存储)数据持久化的方式
     (1)内存    int、String、List、HashMap
               数据只是及时化,当用户在Activity中按返回键时,内存中保存的数据都会被系统回收掉,不适用于:App设置等相关功能
     (2)SharedPreferences 共享参数  会被存储在/data/data/packageName/shared_prefs文件夹下
     (3)File文件的方式   会被保存在/data/data/packageName/files/或者data/data/packageName/cache
                    files和cache的不同点:
                         A:files的生命周期更长
                         B:手机设置界面,App界面中的删除选项不一样:清除数据files与cache、清楚缓存cache
     (4)Database数据库的方式   会一xxx.db的方式保存在data/data/packageName/databases
     (5)网络缓存  保存在后端服务器中,生命周期最长


1、共享参数:sharedPreferences
     SharedPreferences是Android系统提供的一个通用的数据持久化框架,用于存储和读取key-value类型的原始基本数据类型对,目前支持string、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法使用SharedPreferences来存储。
        SharedPreferences主要用于存储系统的配置信息。例如上次登录的用户名,上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家积分等)。当再次启动程序后依然保持原有设置。SharedPreferences用键值对方式存储,方便写入和读取。

      (1)存取步骤:
          
               A:获取sharedPreferences对象,
                    sharedpreferences本身是一个接口,无法直接创建实例,通过Context的getSharedPreferences(String name,int mode)方式获取实例
                         
                     该方法的第二个参数有以下三个值:【文件读写的操作模式
                              
  • Context.MODE_PRIVATE:  指定该SharedPreferences的数据只能被本应用程序读、写;
  • Context.MODE_APPEND:新内容追加到原内容后;
  • Context.MODE_WORLD_READABLE:  指定 SharedPreferences数据能被其他应用程序读,但是不支持写;
  • Context.MODE_WORLD_WRITEABLE:  指定 SharedPreferences数据能被其他应用程序读、写。会覆盖原数据。 
  • 可以使用  +  连接这些权限
               B:调用edit()方法获取 SharedPreferences.Editor;
            C:通过SharedPreferences.Editor接口提供的put()方法对SharedPreferences进行更新;
            D:调用SharedPreferences.Editor的commit()方法,将更新提交到SharedPreferences中。


               (1)读取步骤:
     


2、SD卡相关操作
     (1)、先判断手机是否有sd卡:调用Environment的getExternalStorageState()方法判断手机是否插上sdcard。

               
         (2)获取sdcard的路径: 调用Environment的getExternalStorageDirectory()方法来获取外部存储器的目录。


          (3)获取SD的总容量

          (4)获取SD卡的可用容量

     (5)向SD卡9大共有目录保存数据

Environment.getExternalStoragePublicDirectory(String type)方法,该方法可以返回特定类型的目录,目前支持如下类型:

  1. DIRECTORY_ALARMS //警报的铃声 
  2. DIRECTORY_DCIM //相机拍摄的图片和视频保存的位置 
  3. DIRECTORY_DOWNLOADS //下载文件保存的位置 
  4. DIRECTORY_MOVIES //电影保存的位置, 比如 通过google play下载的电影 
  5. DIRECTORY_MUSIC //音乐保存的位置 
  6. DIRECTORY_NOTIFICATIONS //通知音保存的位置 
  7. DIRECTORY_PICTURES //下载的图片保存的位置 
  8. DIRECTORY_PODCASTS //用于保存podcast(博客)的音频文件 
  9. DIRECTORY_RINGTONES //保存铃声的位置

           (6)向SD卡私有目录保存数据

1、私有目录的files目录下有分为以下7种(无DIRECTORY_DCIM和DIRECTORY_DOWNLOADS):

  • DIRECTORY_ALARMS 
  • DIRECTORY_MOVIES
  • DIRECTORY_MUSIC 
  • DIRECTORY_NOTIFICATIONS 
  • DIRECTORY_PICTURES  
  • DIRECTORY_PODCASTS 
       DIRECTORY_RINGTONES

(6)向SD卡cache目录保存数据


    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?


(1)通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/应用的包名/files/ 目录,一般放一些长时间保存的数据  设置->应用->应用详情里面的清除数据 Clear Data
(2)通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/应用包名/cache/目录,一般存放临时缓存数据            设置->应用->应用详情里面的清除缓存“ Clear Cache
(3)如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
        而且上面二个目录分别对应 设置->应用->应用详情里面的清除数据清除缓存选项。当然如果要保存下载的内容,就不要放在以上目录下。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值