本地IO

Context类提供的应用内部基本文件和目录处理方法如下。

File getDir(String name, int mode)                     //获取/data/data/<包名>/目录的子目录(如果不存在就先创建它)。File getFilesDir()                                     //获取/data/data/<包名>/files目录。String[] fileList()                                    //获取主文件目录下的文件列表。可与其他方法配合使用,如openFileInput(String)。FilegetCacheDir()                                      //获取/data/data/<包名>/cache目录。应注意及时清理该目录,并节约使用。450FileInputStream openFileInput(String name)             //打开现有文件进行读取。FileOutputStream openFileOutput(String name, int mode) //打开文件进行写入,如果不存在就创建它。

又或者看下面一张图,图片来自 Holmofy的简书

 

 

使用SharedPreferences

SharedPreferences本质上就是文件系统中的文件,可使用SharedPreferences类读写它。

SharedPreferences实例用起来更像一个键值对仓库(类似于Bundle),但它可以通过持久化存储保存数据。键值对中的键为字符串,而值是原子数据类型。进一步查看shared preferences文件可知,它们实际上是一种简单的XML文件,但SharedPreferences类已屏蔽了读写文件的实现细节。sharedpreferences文件保存在应用沙盒中,所以,不应用它保存类似密码这样的敏感信息。

要获得SharedPreferences定制实例,可使用Context.getSharedPreferences (String, int)方法。然而,在实际开发中,我们并不关心SharedPreferences实例具体是什么样,只要它能共享于整个应用就可以了。这种情况下,最好使用方法:

    PreferenceManager.getDefaultSharedPreferences(Context)

该方法会返回具有私有权限和默认名称的实例(仅在当前应用内可用)。

 

取出查询字符串值非常简单,调用SharedPreferences.getString(...)就可以了。如果是其他类型数据,就调用对应的取值方法,比如getInt(...)。第二个参数指定默认返回值

    PreferenceManager.getDefaultSharedPreferences(context)        .getString(PREF_SEARCH_QUERY,null);

调用SharedPreferences.edit()方法,可获取一个SharedPreferences.Editor实例。

它就是在SharedPreferences中保存查询信息要用到的类。与FragmentTransaction的使用类似,利用SharedPreferences.Editor,可将一组数据操作放入一个事务中。如有一批数据要更新,在一个事务中批量写入就可以了。

private static final String PREF_SEARCH_QUERY = "Query";
PreferenceManager.getDefaultSharedPreferences(context)            .edit()            .putString(PREF_SEARCH_QUERY, query)            .apply(); 

SharedPreferences.Editor的apply()异步方法会写入数据。然后该SharedPreferences文件的其他用户就能看到写入的数据了。apply()方法首先在内存中执行数据变更,然后在后台线程上真正把数据写入文件。

 

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. AndroidManifest.xml 文件里面的内容介绍
  3. Android(安卓)Socket通信
  4. Android(安卓)9.0 sdCard文件读写
  5. 解决Android(安卓)应用方法数不能超过65K的问题
  6. android第二天早:简单工具和布局基础
  7. Android利用AChartEngine绘制图表
  8. drawable(hdpi,ldpi,mdpi)的区别
  9. SEAndroid安全机制框架分析

随机推荐

  1. 关于Android菜单上的记录
  2. android仿今日头条App、多种漂亮加载效果
  3. 开放平台的Android SDK
  4. android Switch控件
  5. Android日记之2012/02/10——Android中的
  6. Android(安卓)NDK开发详细介绍
  7. Android真响应式架构——数据流动性
  8. Android 上 Https 双向通信— 深入理解Ke
  9. android 实现自定义键盘的实例
  10. android 使用Intent传递数据之全局变量传