Android数据存储和读取的三种方法
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数据存储和读取的三种方法相关推荐
- php+数组存放文件名_php将数组存储为文本文件的三种方法
本篇文章主要介绍php将数组存储为文本文件的三种方法,感兴趣的朋友参考下,希望对大家有所帮助. (1)利用serialize 将数组序列化存储为文本文件,调用时候再使用unserialize 还原&l ...
- 四种数据类型转换字符串类型的 三种方法
1.Number类型 2.Boolean类型 3.undefined类型 4.null类型 在JavaScript中如果想将以上的四种基本数据类型转换为字符串类型, 常用的方法有三种 1.对于Numb ...
- 处理数据中分类变量的三种方法(附代码实现)
本文是将kaggle Courses中 Categorical Variables | Kaggle进行了翻译并且加入自己的理解,如有地方不清楚,可以查阅原文 文章目录 介绍 三种方法 1)删除分类变 ...
- Android开发中完全退出程序的三种方法
Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里给大家三种比较简单的方法实现. 首先要说明在B中直接使用finish(),接 ...
- iPhone数据丢失怎么办?如何恢复iPhone数据?iPhone数据恢复的三种方法
iPhone数据丢失怎么办?如何恢复iPhone数据?Joyoshare iPhone Data Recovery数据恢复软件拥有三种智能恢复模式,您可以轻松地从 iDevices 本身.iTunes ...
- Android屏幕保持常亮的三种方法
一.界面布局文件顶层添加keepScreenOn属性 android:keepScreenOn="true" 二.Window中设置flag getWindow().addFlag ...
- vue数据模板文件的下载三种方法
用vue2针对后台返回数据的不同提供的下载模板文件三种办法(针对Excel) 一.当后台返回的数据是文件流时,以下代码可实现直接下载文件到本地 let ele = document.createEle ...
- android 程序更换字体颜色,android改变字体的颜色的三种方法
法一: TextView tv = new TextView(this); tv.setText("你好"); setContentView(tv); 该方法自己没有实现成功,无法 ...
- oracle 数据导入 mysql_将oracle的数据导入到mysql的三种方法
为了生产库释放部分资源,需要将API模块迁移到MysqL中,及需要导数据. 尝试了oracle to MysqL工具,迁移时报错不说,这么大的数据量,用这种简陋的工具不大可靠. 意外发现平时用的数据库 ...
最新文章
- Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘
- 代码中配置log4j (同时输出不同级别的log到不同终端)
- Kube-Scheduler插件的自定义
- Catalan Numbers 卡特兰数
- java 中violate_Java中的volatile关键字及Cache更新
- Codeforces 437D 贪心+并查集
- 計算機二級-java11
- C++模版类List实现
- 华为模拟eNSP器交换机简单开具以及基础命令
- 武汉互联网公司和生活成本
- 0范数,1范数,2范数
- 微信小程序实现瀑布流布局
- ps怎么清屏_刷屏了的黑洞照片,居然是3分钟PS出来的!
- 软件测试适合mem吗,使用memtest86怎么检测电脑内存?终于搞明白了
- 使用Win32 SDK开发屏幕保护程序
- kubesphere_KubeSphere
- FVM in CFD 学习笔记_第15章_流动计算:不可压缩流动_1_交错网格上的SIMPLE算法
- 理光Ricoh Fax SL350 一体机驱动
- 2021年河南西平高考成绩查询,三台西平中学2021年排名
- 【转载】独行冰海 ~讲述我自己的故事~
热门文章
- abaqus仿真快速入门
- client-go源码学习(二):Reflector、DeltaFIFO
- 超个性鼠标设计桌面图标
- 2020年华为杯中国研究生数学建模时间线
- 十个最具潜力的技术认证
- 服务器电源管理系统SPM 价格,Liebert SPM 2.0服务器电源管理系统:在对比中彰显技术特性和性能优势...
- 中专计算机资格证一共多少级
- monkeyappcrawler移动端测试
- AI绘画Stable Diffusion技巧分享
- 基于stm32f103zet6(精英版)vct6 vet6的通用定时器(TIM2~TIM5)的pwm输出