【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 对象…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...