Android数据存储和读取的三种方法

  • 一、文件存储
  • 二、Context存储
  • 三、SharedPreferences存储

一、文件存储

1、利用文件进行数据的存储

public static boolean saveAsFilepath(String username, String password){// 直接给出要写入文件的路径   File file = new File("data/data/cn.edu.jssvc.logonscreen/info.txt");try {FileOutputStream fos = new FileOutputStream(file);fos.write(username.getBytes());fos.write(("\n"+password).getBytes());fos.close();return true;} catch (Exception e) {e.printStackTrace();}return false;}

2、利用文件进行数据的读取

public static  String[] loadInfoAsFilepath(){    String []temp=new String[2];// 直接给出要读取文件的路径    File file = new File("data/data/cn.edu.jssvc.logonscreen/info.txt");try {FileInputStream fis = new FileInputStream(file);BufferedReader reader = new BufferedReader(new InputStreamReader(fis));temp[0] = reader.readLine();temp[1] = reader.readLine();} catch (Exception e) {e.printStackTrace();}return temp;
}

二、Context存储

1、利用Context进行数据的存储

public static boolean saveAsContext(Context context, String username, String password){FileOutputStream fos = null;try {fos = context.openFileOutput("info2.txt", context.MODE_PRIVATE);fos.write(username.getBytes());fos.write(("\n"+password).getBytes());return true;} catch (Exception e) {e.printStackTrace();}return false;
}

这种方法会将数据保存到data/data/包名/files目录下

2、利用Context进行数据的读取

public static String[] loadInfoAsContext(Context context){// 计算要读取文件的总行数int fileLength = 0;try {// 自动读取data/data/包名/files目录,只需给出文件名即可FileInputStream fis = context.openFileInput("info2.txt");BufferedReader reader = new BufferedReader(new InputStreamReader(fis));while(reader.readLine()!=null) {fileLength++;}} catch (Exception e) {e.printStackTrace();}// 读取文件数据String []temp = new String[fileLength];try {FileInputStream fis = context.openFileInput("info2.txt");BufferedReader reader = new BufferedReader(new InputStreamReader(fis));temp[0] = reader.readLine();temp[1] = reader.readLine();} catch (Exception e) {e.printStackTrace();}return temp;}

三、SharedPreferences存储

首先通过Context的getSharedPreferences()方法获取SharedPreferences对象

SharedPreferences sp;
// getSharedPreferences(para1:文件名;para2:模式),是Context的方法
// 读和写都使用sp进行操作,所以处理的文件都是info3
sp = getSharedPreferences("info3", MODE_PRIVATE);

1、利用SharedPreferences进行数据的存储

SharedPreferences.Editor editor = sp.edit();
// putString(para1:键;para2:值),是xml保存数据的格式
editor.putString("USERNAME", username);
editor.putString("PASSWORD", password);
editor.putBoolean("ISCHECKED", checked);
// 只有调用commit方法后,putXXX才会生效
editor.commit();
Log.d("MainActivity", "保存成功");

2、利用SharedPreferences进行数据的读取
这种方法会自动读取data/data/包名/shared_prefs目录,只需给出文件名即可
这种方法可以将指定Key对应的value读取出来

// getString:获取xml文件中的数据,这里给出key,获取对应的value(para1:键;para2:如果找不到对应的value,则将defvalue作为value)
Log.d("MainActivity", sp.getString("USERNAME","defusername");
Log.d("MainActivity", sp.getString("PASSWORD","defpassword");

最后,虽然有三种数据存储和读取的方法,但平时进行Android开发时,建议使用第二种或第三种方法

Android数据存储和读取的三种方法相关推荐

  1. php+数组存放文件名_php将数组存储为文本文件的三种方法

    本篇文章主要介绍php将数组存储为文本文件的三种方法,感兴趣的朋友参考下,希望对大家有所帮助. (1)利用serialize 将数组序列化存储为文本文件,调用时候再使用unserialize 还原&l ...

  2. 四种数据类型转换字符串类型的 三种方法

    1.Number类型 2.Boolean类型 3.undefined类型 4.null类型 在JavaScript中如果想将以上的四种基本数据类型转换为字符串类型, 常用的方法有三种 1.对于Numb ...

  3. 处理数据中分类变量的三种方法(附代码实现)

    本文是将kaggle Courses中 Categorical Variables | Kaggle进行了翻译并且加入自己的理解,如有地方不清楚,可以查阅原文 文章目录 介绍 三种方法 1)删除分类变 ...

  4. Android开发中完全退出程序的三种方法

    Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里给大家三种比较简单的方法实现. 首先要说明在B中直接使用finish(),接 ...

  5. iPhone数据丢失怎么办?如何恢复iPhone数据?iPhone数据恢复的三种方法

    iPhone数据丢失怎么办?如何恢复iPhone数据?Joyoshare iPhone Data Recovery数据恢复软件拥有三种智能恢复模式,您可以轻松地从 iDevices 本身.iTunes ...

  6. Android屏幕保持常亮的三种方法

    一.界面布局文件顶层添加keepScreenOn属性 android:keepScreenOn="true" 二.Window中设置flag getWindow().addFlag ...

  7. vue数据模板文件的下载三种方法

    用vue2针对后台返回数据的不同提供的下载模板文件三种办法(针对Excel) 一.当后台返回的数据是文件流时,以下代码可实现直接下载文件到本地 let ele = document.createEle ...

  8. android 程序更换字体颜色,android改变字体的颜色的三种方法

    法一: TextView tv = new TextView(this); tv.setText("你好"); setContentView(tv); 该方法自己没有实现成功,无法 ...

  9. oracle 数据导入 mysql_将oracle的数据导入到mysql的三种方法

    为了生产库释放部分资源,需要将API模块迁移到MysqL中,及需要导数据. 尝试了oracle to MysqL工具,迁移时报错不说,这么大的数据量,用这种简陋的工具不大可靠. 意外发现平时用的数据库 ...

最新文章

  1. Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘
  2. 代码中配置log4j (同时输出不同级别的log到不同终端)
  3. Kube-Scheduler插件的自定义
  4. Catalan Numbers 卡特兰数
  5. java 中violate_Java中的volatile关键字及Cache更新
  6. Codeforces 437D 贪心+并查集
  7. 計算機二級-java11
  8. C++模版类List实现
  9. 华为模拟eNSP器交换机简单开具以及基础命令
  10. 武汉互联网公司和生活成本
  11. 0范数,1范数,2范数
  12. 微信小程序实现瀑布流布局
  13. ps怎么清屏_刷屏了的黑洞照片,居然是3分钟PS出来的!
  14. 软件测试适合mem吗,使用memtest86怎么检测电脑内存?终于搞明白了
  15. 使用Win32 SDK开发屏幕保护程序
  16. kubesphere_KubeSphere
  17. FVM in CFD 学习笔记_第15章_流动计算:不可压缩流动_1_交错网格上的SIMPLE算法
  18. 理光Ricoh Fax SL350 一体机驱动
  19. 2021年河南西平高考成绩查询,三台西平中学2021年排名
  20. 【转载】独行冰海 ~讲述我自己的故事~

热门文章

  1. abaqus仿真快速入门
  2. client-go源码学习(二):Reflector、DeltaFIFO
  3. 超个性鼠标设计桌面图标
  4. 2020年华为杯中国研究生数学建模时间线
  5. 十个最具潜力的技术认证
  6. 服务器电源管理系统SPM 价格,Liebert SPM 2.0服务器电源管理系统:在对比中彰显技术特性和性能优势...
  7. 中专计算机资格证一共多少级
  8. monkeyappcrawler移动端测试
  9. AI绘画Stable Diffusion技巧分享
  10. 基于stm32f103zet6(精英版)vct6 vet6的通用定时器(TIM2~TIM5)的pwm输出