当前位置:   article > 正文

Android中数据储存方式的几种工具类_android 文件存储工具类

android 文件存储工具类

一.在Android开发中数据的存储方式有五种:

  1.使用SharedPreferences进行存储:

     适用范围存储小量的数据,储存的格式有字符串类型及基本数据类型。一般用于存储应用程序的配置信息,如用户设置的App中的设置信息是否打开音效自动升级等等,它是基于XML文件存储的键值对(key-value)的数据。

  2.文件存储:通过打开数据文件的文件IO流进行读和写的操作,存储在手机本身的SD卡中或者手机的储存空间中。

  3.SQLite数据库储存:Android中数据库使用sqlite,支持SQL语言的语法。

  4.使用ContentProvider存储数据:一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProvider是以类似数据库中表的方式将数据暴露的。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URL来表示外界需要访问的“数据库”。

  5.使用网络储存:我们可以调用WebService返回的数据或是解析HTTP协议实现网络数据交互。

二.工具类的使用:

  1.SharedPreferences的工具类:

  1. package com.example.foreveross.clickdemo;
  2. import android.content.Context;
  3. import android.content.SharedPreferences;
  4. /**
  5. * Created by Foreveross on 2017/4/15.
  6. */
  7. public class SPUtil {
  8. private static final String FILENAME ="mydata" ; //设置获取数据期望的文件名字
  9. /**
  10. * 存入的字符串的数据,Context.MODE_PRIVATE一般是私有的也可是可读可写的模式
  11. * @param context
  12. * @param key 键
  13. * @param value 值
  14. */
  15. public static void putString(Context context, String key, String value){
  16. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  17. SharedPreferences.Editor edit = sharedPreferences.edit();
  18. edit.putString(key, value);
  19. edit.commit();
  20. }
  21. /**
  22. * 获取的字符串的数据,Context.MODE_PRIVATE一般是私有的也可是可读可写的模式
  23. * @param context
  24. * @param key 键
  25. * @param defValue 默认值
  26. */
  27. public static String getString(Context context,String key,String defValue){
  28. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  29. return sharedPreferences.getString(key, defValue);
  30. }
  31. //存入布尔值数据
  32. public static void putBoolean(Context context,String key,boolean value){
  33. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  34. SharedPreferences.Editor edit = sharedPreferences.edit();
  35. edit.putBoolean(key, value);
  36. edit.commit();
  37. }
  38. //获取布尔值数据
  39. public static boolean getBoolean(Context context,String key,boolean defValue){
  40. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  41. return sharedPreferences.getBoolean(key, defValue);
  42. }
  43. public static void putFloat(Context context,String key,float value){
  44. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  45. SharedPreferences.Editor edit = sharedPreferences.edit();
  46. edit.putFloat(key, value);
  47. edit.commit();
  48. }
  49. public static float getFloat(Context context,String key,float defValue){
  50. SharedPreferences sharedPreferences = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
  51. return sharedPreferences.getFloat(key, defValue);
  52. }
  53. }
在使用SharePreferences时无非就是SharePreferences.Editor的put和commit的方法。

  2.文件存储的工具类:

  1. package com.example.foreveross.clickdemo;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. /**
  7. * Created by Foreveross on 2017/4/15.
  8. */
  9. public class FileUtil {
  10. /**
  11. * 不存在则创建文件
  12. * @param path
  13. * @return
  14. */
  15. public static String createIfNotExist(String path){
  16. File file=new File(path);
  17. if (!file.exists()) {
  18. try {
  19. file.createNewFile(); //如果不存在则创建新的file
  20. } catch (IOException e) {
  21. System.out.println(e.getMessage());
  22. }
  23. }
  24. return path;
  25. }
  26. /**
  27. * 向文件中写入数据
  28. *
  29. * @param filePath 目标文件全路径
  30. * @param data 要写入的数据
  31. * @return true表示写入成功 false表示写入失败
  32. */
  33. public static boolean writeBytes(String filePath, byte[] data) {
  34. try {
  35. FileOutputStream fos = new FileOutputStream(filePath); //文件输出流
  36. fos.write(data);
  37. fos.close();
  38. return true;
  39. } catch (Exception e) {
  40. System.out.println(e.getMessage());
  41. }
  42. return false;
  43. }
  44. /**
  45. * 从文件中读取数据
  46. *
  47. * @param file
  48. * @return
  49. */
  50. public static byte[] readBytes(String file) {
  51. try {
  52. FileInputStream fis = new FileInputStream(file);
  53. int len = fis.available();
  54. byte[] buffer = new byte[len];
  55. fis.read(buffer);
  56. fis.close();
  57. return buffer;
  58. } catch (Exception e) {
  59. System.out.println(e.getMessage());
  60. }
  61. return null;
  62. }
  63. /**
  64. * 向文件中写入字符串String类型的内容
  65. * @param file 文件路径
  66. * @param content 文件内容
  67. * @param charset 写入时候所使用的字符集
  68. */
  69. public static void writeString(String file, String content, String charset) {
  70. try {
  71. byte[] data = content.getBytes(charset);
  72. writeBytes(file, data);
  73. } catch (Exception e) {
  74. System.out.println(e.getMessage());
  75. }
  76. }
  77. /**
  78. * 从文件中读取数据,返回类型是字符串String类型
  79. * @param file 文件路径
  80. * @param charset 读取文件时使用的字符集,如utf-8、GBK等
  81. * @return
  82. */
  83. public static String readString(String file, String charset) {
  84. byte[] data = readBytes(file);
  85. String ret = null;
  86. try {
  87. ret = new String(data, charset);
  88. } catch (Exception e) {
  89. System.out.println(e.getMessage());
  90. }
  91. return ret;
  92. }
  93. }
 手机里的一些有用的方法:

1).getCacheDir()方法用于获取/data/data/<application package>/cache目录。

2).getFilesDir()方法用于获取/data/data/<application package>/files目录。

3).Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录。

4).Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录。

5).获取SD卡的路径:



  1. public String getSDPath(){
  2. File sdDir = null;
  3. boolean sdCardExist = Environment.getExternalStorageState()
  4. .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
  5. if (sdCardExist)
  6. {
  7. sdDir = Environment.getExternalStorageDirectory();//获取跟目录
  8. }
  9. return sdDir.toString();
  10. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/319274
推荐阅读
相关标签
  

闽ICP备14008679号