【android开发-16】android中文件和sharedpreferences数据存储详解
1,文件读写方式的数据存储
下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件:
保存文件:
try { String data = "这是要保存的数据"; FileOutputStream fos = openFileOutput("myFile", Context.MODE_PRIVATE); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter wr= new BufferedWriter (osw); wr.write(data );wr.close();
} catch (Exception e) { e.printStackTrace();
}
在这个例子中,我们使用openFileOutput方法来打开一个文件输出流。我们传递两个参数给这个方法:文件名和模式。模式可以是Context.MODE_PRIVATE(默认),Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITABLE。
读取文件:
try { FileInputStream fis = openFileInput("myFile"); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { Log.e("DATA", line); } fis.close();
} catch (Exception e) { e.printStackTrace();
}
在这个例子中,我们使用openFileInput方法来打开一个文件输入流。然后,我们创建一个InputStreamReader和一个BufferedReader来读取文件的内容。最后,我们使用readLine方法来逐行读取文件的内容。
注意:文件都是默认存储到/data/data/package name/files/目录下。
注意:在Android 10(API级别29)及更高版本中,对于内部存储,Google开始限制可以访问的数据。你可能需要考虑使用其他策略,如使用外部存储或使用SQLite数据库。
2,sharedpreferences方式读写数据
在Android中,SharedPreferences是一个轻量级存储类,主要用于保存一些基本类型的数据,如String,Int,Boolean等。它提供了简单的读写接口,允许开发人员存储和获取数据。以下是如何使用SharedPreferences来读写数据的示例代码:
写入数据:
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit(); // 存储一个字符串
editor.putString("key1", "value1");
// 存储一个整数
editor.putInt("key2", 123);
// 存储一个布尔值
editor.putBoolean("key3", true); // 提交编辑
editor.commit();
读取数据
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE); // 读取一个字符串
String value1 = sharedPreferences.getString("key1", "default_value");
// 读取一个整数
int value2 = sharedPreferences.getInt("key2", 0);
// 读取一个布尔值
boolean value3 = sharedPreferences.getBoolean("key3", false);
注意:getSharedPreferences方法的第一个参数是偏好设置文件的名称,如果该名称不存在,系统将创建一个新的。第二个参数是模式,通常我们使用MODE_PRIVATE或Context.MODE_PRIVATE。如果使用MODE_WORLD_READABLE或Context.MODE_WORLD_READABLE,则从Android 4.2(API级别17)开始已经被废弃。
注意:sharedpreferences是使用键值对的方式存储数据。
默认的存储路径/data/data/package name/shared_pref/目录下。
使用xml的格式来管理数据:

完整的参考用例代码:
以下是在Android中使用SharedPreferences的完整参考代码用例。这个例子展示了如何使用SharedPreferences来存储和读取用户的偏好设置。
写入数据:
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.Context;
import android.preference.PreferenceManager; public class MyActivity extends Activity { private SharedPreferences sharedPreferences; private Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。 sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE); editor = sharedPreferences.edit(); // 存储一个字符串 editor.putString("key1", "value1"); // 存储一个整数 editor.putInt("key2", 123); // 存储一个布尔值 editor.putBoolean("key3", true); // 提交编辑,将数据保存到SharedPreferences中。 editor.commit(); }
}
读取数据:
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import android.widget.TextView; public class MyActivity extends Activity { private SharedPreferences sharedPreferences; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.textView); // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。 sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE); // 读取一个字符串,如果找不到键,则返回默认值"default_value" String value1 = sharedPreferences.getString("key1", "default_value"); textView.setText("Value of key1: " + value1); // 读取一个整数,如果找不到键,则返回默认值0 int value2 = sharedPreferences.getInt("key2", 0); textView.append("\nValue of key2: " + value2); // 读取一个布尔值,如果找不到键,则返回默认值false boolean value3 = sharedPreferences.getBoolean("key3", false); textView.append("\nValue of key3: " + value3); }
}
相关文章:
【android开发-16】android中文件和sharedpreferences数据存储详解
1,文件读写方式的数据存储 下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件: 保存文件: try { String data "这是要保存的数据"; FileOutputStream fos openFileOutput("myFile"…...
《当代家庭教育》期刊论文投稿发表简介
《当代家庭教育》杂志是家庭的参谋和助手,社会的桥梁和纽带,人生的伴侣和知音,事业的良师益友。 国家新闻出版总署批准的正规省级教育类G4期刊,知网、维普期刊网收录。安排基础教育相关稿件,适用于评职称时的论文发表…...
【操作教程】如何将外省医保转入广州市区(医保转移接续手续办理)?
登录(可以用微信扫码采用粤省事账号登录,没有粤省事小程序账号的可以自主申请很方便)广东政务服务网https://www.gdzwfw.gov.cn/ 这里不得不吐槽官网开发者,太拉胯了,居然有undefined,多刷新几次就好了&…...
【分布式系统学习】CAP原理详解
CAP原理详解 前言CAP一张图 一、概念1.1 关键词解读1.2 关于CAP(拆分解读)1.3 CAP原理精髓 二、CAP模拟场景举例理解三、CAP原理证明为什么不能同时满足(下面举例说明)3.1 必须满足分区容错性P下的处理方式3.2 不是必须满足分区容…...
【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
应用场景: 假设一批数据,每一个样本中,有唯一标识(id)、品类(cate_id)、受众(users, 小孩、老人、中年等)等属性,希望从其中找出一些样本,使得这…...
Python-炸弹人【附完整源码】
炸弹人 炸弹人是童年的一款经典电子游戏,玩家控制一个类似"炸弹人"的角色,这个角色可以放置炸弹,并在指定的时间内引爆它们消灭敌人以达到目标,此游戏共设有两节关卡,代码如下: 运行效果&#x…...
[英语学习][5][Word Power Made Easy]的精读与翻译优化
[序言] 今日完成第18页的阅读, 发现大量的翻译错误以及不准确. 需要分两篇文章进行讲解. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第18页] Wh…...
Apache Doris 详细教程(一)
1、Doris简介 1.1、doris概述 Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超过 200 个产品线在使用,部署机器超过 1000 台…...
【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
若依官方的前后端分离版中,前端用的Vue2,这个有人改了Vue3的前端出来。刚好用来学习: https://gitee.com/weifengze/RuoYi-Vue3 运行前后端项目 首先运行项目 启动前端,npm install、npm run dev 启动后端,按教程配置…...
win11 关闭快速启动,解决重启后部分应用没有关闭的问题
鼠标右击win11开始菜单选择windows终端(管理员)打开输入:powercfg /h off按下回车即可...
python爬虫-某公开数据网站实例小记
注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 第一步:分析页面和请求方式 此网站没有技巧的加密,仅是需要携带cookie和请求…...
还记得当初自己为什么选择计算机?
还记得当初自己为什么选择计算机? 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的那天࿰…...
“数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办
在当前国家信创战略加速实施,及国民经济数字化转型,叠加驱动信息化行业加速发展的大形势下,以“数说新语-GBASE南大通用开放创新再领航”为主题的2023 GBASE南大通用媒体交流日活动在GBASE天津总部举行。来自IT168、ITPUB、韩锋频道、自主可控…...
每天一点python——day88
#每天一点Python——88 #编程两大思想【面向过程与面向对象】 #如图: 面向过程的线性思维: 类似于做菜一步步的来,先怎么样怎么样,再怎么样 如果不一步步的来,例如先炒菜再点火,这样是做不好的 面向对象&a…...
xShell快捷键
Xshell 是一个强大的终端仿真器,它支持多种Linux发行版的远程连接。Xshell提供了一系列的快捷键,以提高用户的操作效率。以下是一些Xshell中常用的快捷键: 新建会话窗口: Ctrl N 或 Ctrl Shift N 在现有会话中打开新标签&…...
OkGo导入失败解决办法
jcenter()maven { url "https://jitpack.io" }再同步就可以了...
02、pytest环境准备
工具准备 下载Python——python官网下载:https://www.python.org/下载PyCharm——pycharm官网下载:https://www.jetbrains.com.cn/en-us/pycharm/参考文档——pytest官方文档:https://docs.pytest.org/en/7.4.x/一个方便好用的office库——p…...
海上液化天然气 LNG 终端 ,数字孪生监控系统
液化天然气 (Liquefied Natural Gas,简称 LNG) 在能源转型过程中被广泛认可为相对较清洁的能源选择。 相对于传统的煤炭和石油燃料,LNG 的燃烧过程产生的二氧化碳 (CO2) 排放较低。LNG 的燃烧释放的二氧化碳排放较少,因此对应对气候变化和减…...
C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构二)
读别人的代码,就像撕洋葱,每读一层,哭一遍。 引言 ARM 处理器是冯诺依曼存储结构,程序空间、RAM 空间及IO 映射空间统一编址,除对对RAM 操作以外,对外围IO、程序数据的访问均要通过加载/存储指令进…...
Axios详解及运用案例
前言 Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js。它允许开发者使用异步的方式发送 HTTP 请求,同时提供了一个简单、方便的 API 来处理这些请求和响应。 主要特性 Axios 的主要特性包括: 支持 Promise API:Axios 的所有函数都返回一个 Promise 对象…...
【紧急预警】PlayAI新政策已生效!ElevenLabs未披露的商用语音水印机制曝光——2024年AI语音合规红线与替代方案速览(仅剩72小时窗口期)
更多请点击: https://intelliparadigm.com 第一章:【紧急预警】PlayAI新政策已生效!ElevenLabs未披露的商用语音水印机制曝光——2024年AI语音合规红线与替代方案速览(仅剩72小时窗口期) 水印机制逆向验证结果 通过对…...
League-Toolkit终极指南:英雄联盟玩家的智能自动化神器
League-Toolkit终极指南:英雄联盟玩家的智能自动化神器 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 如果你是英雄联盟玩家&…...
Laravel 8.x核心特性深度解析
好的,Laravel 8.x 版本引入了多项重要改进和新特性,旨在提升开发效率和功能。以下是其主要特性:Laravel Jetstream这是一个全新的应用脚手架,提供了登录、注册、邮箱验证、双因素认证、会话管理、API 支持(通过 Sanctu…...
别再只会暴力破解!CTF密码学题中的那些‘送分’套路与高效工具盘点
CTF密码学解题:从特征识别到精准打击的高效方法论 在CTF竞赛中,密码学题目往往被参赛者视为"送分题",但现实情况却是许多队伍在这些看似简单的题目上浪费大量时间。真正高效的解题者与普通选手的区别,往往在于对题目特…...
Windows触控板革命:三指拖拽优化终极指南
Windows触控板革命:三指拖拽优化终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWindows …...
Blender 3MF插件:打破3D打印工作流的终极瓶颈
Blender 3MF插件:打破3D打印工作流的终极瓶颈 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾在3D打印项目中遇到过这样的困境?精心设计的…...
C++ 管理类使用单例模式的特点与最佳实践
摘要:在 C++ 项目开发中,管理类(如日志管理器、配置管理器、资源管理器等)通常需要全局唯一实例。本文结合栈对象与指针的性能差异,深入探讨单例模式在管理类设计中的特点,并给出一个可复用的 CRTP 单例模板实现。 一、为什么管理类需要单例模式? 在大型 C++ 项目中,我…...
RoboMaster视觉入门:用OpenCV3.4.5从摄像头图像里找出装甲板(附完整C++代码)
RoboMaster视觉实战:从零构建装甲板识别系统(C/OpenCV3.4.5全解析) 在RoboMaster机甲大师赛中,视觉识别系统如同战车的"眼睛",而装甲板识别则是核心中的核心。本文将带你从零开始,用OpenCV3.4.5…...
3分钟极速指南:网易云音乐无损FLAC批量下载神器
3分钟极速指南:网易云音乐无损FLAC批量下载神器 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为寻找高品质音乐资源而烦恼吗&#x…...
CANN/ge算子句柄创建API
aclopCreateHandle 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorF…...
