Android数据存储

Android中数据持久化保存的几种方式

  • Shared Preferences
    • Android中轻量级保存数据的一种方式,可以用于保存程序的配置信息!还有程序第一次进入!
    • 一种轻量级的数据保存方式!它会把你要保存的数据,保存到本地,手机的内置存储中!会以一种XML格式的文本存储!
    • 使用方法
      • 写入:
        • 获取SharedPreferences对象
          • //Context.getSharedPreferences(name, mode)
            //name 保存数据xml文件的名字
            //mode 模式 MODE_APPEND可追加
            //MODE_PRIVATE私有 本程序可以访问
            //MODE_WORLD_READABLE 全世界可度
            //MODE_WORLD_WRITEABLE 全世界可写
            //模式可以用|拼接
            //但是注意:配置文件,强烈建议,要写成私有模式

            Context.getSharedPreferences(name, mode)
        • 创建画笔
          • Editor edit = sharedPreferences.edit();
        • 放数据
          • edit.put类型(key,value);
        • 提交数据
          • edit.commit();
      • 读取:
        • 获取SharedPreferences对象
          • Context.getSharedPreferences(name, mode)
        • 直接根据类型获取数据
          • sharedPreferences.get<数据类型>(key,如果key不存在的默认值);
    • 数据存储的位置:data/data/包名/share_prefs/,只有在程序运行后才会生成文件
    • 注意:如果程序卸载!那么此文件也会跟着被删除!
  • Internal Storage
    • 手机内置存储!
  • External Storage
    • 手机的外置存储!通常指SDCard!也可以时U盘!
  • SQLite Databases
    • 数据库,可以保存大量的文本内容!
  • NetworkConnection
    • 云存储!把数据提交到服务器!

数据读取与写入

Internal Storage(内置存储)

  • 介绍:
    • 内置存储应该总是可用!
    • 内置存储的路径在data/data下,对应的程序会在对应程序的包名下!
    • 运行过的程序,都会自动的在内置存储中创建一个包名相同的文件夹
    • 如果没有root,没法看data/data下的文件!
    • 内置存储中data/data包名文件,只能本程序打开!
    • 如果要求文件的安全性比较高,可以优先放置到内置存储中!但是要注意:内置存储大小一般很有限!较大的文件建议放到外置存储中!
    • 内置存储程序对应的包,会随着程序卸载而被卸载!
  • 读、写、删除
    • 内部存储的写入:
      • 方式一:
        • FileOutputStream out=openFileOutput(String name,int mode);
      • 方式二:
        • File file=new File(getFilesDir(), 文件名称);
        • FileOutputStream out=new FileOutputStream(file);
    • 内部存储的读取:
      • 方式一:
        • FileInputStream in=openFileInput(String name);
      • 方式二:
        • File file=new File(getFilesDir(),文件名称);
        • FileInputStream in=new FileInputStream(file);
    • 删除文件:
      • boolean b = deleteFile();

外置存储

  • 介绍
    • 外置存储不一定随时可用!(例如:卸载掉SDCard)
    • 使用前先判断SDCard是否可用!
    • 外置存储的空间大于内置!可以放置较大的文件!
    • 外置存储,任何程序都可以访问!类似数据库这种文件,不建议放置到外置存储中!
    • 外置存储使用要加权限!
      • <!-- 创建文件权限 -->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
        <!-- 读写权限 -->
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 获取路径
    • 外置存储的位置和路径!
      • /mnt/0
      • /mnt/scard
      • /mnt/media_rw/sdcard
    • 获取SDCard所在的根目录
      • Environment.getExternalStorageDirectory();
    • 获取SDCard公有目录
      • Environment.getExternalStoragePublicDirectory(Environment.类型);
    • 获取外置私有目录
      • Context.getExternalFilesDir(type);
    • 获取sdcard挂载状态
      • Enviroment.getExternalStorageState();
      • Enviroment.MEDIA_MOUNTED表示可以使用状态
  • 写入
    • 使用Java的I/O流操作即可
    • 写到sdcard
      • 创建目标文件
        File file = new File(dir,name);
        dir: 文件所在的文件夹 可以根据需求去获取 有三种
        name:具体的文件名
        FileOutputStream out = new FileOutputStream(File-->目标文件);
        out.write(byte[]); //写入内容即可
    • 写到Application
      • File file = new File(dir,name);
        dir: 文件所在的文件夹 可以根据需求去获取 有三种
        name:具体的文件名称
        FileInputStream in = new FileInputStream(File-->要把哪个文件写入);
        in转到 byte[]中即可!!!
  • Bitmap的compress()方法
    • 压缩图片并且保存
    • Bitmap.compress(参数1,参数2,参数3);
      参数1:导出以后的格式,可以使用Bitmap.CompressFormat中的枚举,如Bitmap.CompressFormat.JPEG或Bitmap.CompressFormat.PNG
      参数2:压缩指数,100代表满,50原来的二分之一,注意无损格式无法进行压缩,如果强行进行压缩会忽略压缩指数,原图片不会产生变化,如:png格式
      参数3:输出流,指要把对应的Bitmap对象压缩后写进哪个流里
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值