【安卓开发】数据存储全方案--详解持久化技术
读书笔记系列:第一行代码 Android
6.1 持久化技术简介
三种数据持久化方式:文件存储、SharedPreference存储以及数据库存储,除此之外还可以存储在SD卡中(不安全)
6.2 文件存储
该方法不对存储的内容做格式化处理都是直接保存到文件中,所以适合存一些简单的文本数据或二进制数据,要想存复杂文本数据,就需要自己定义格式规范方便解析。
6.2.1 将数据存储到文件中
Context类中有一个openFileOutput方法,可将数据保存到指定文件中,需要两个参数,第一个是文件名(文件名不包含路径,所有都默认存在/data/data/<packagename>/files/目录下),第二个参数是文件的操作模式,MODE_PRIVATE和MODE_APPEND,一个是覆盖一个是追加。
openFileOutput()方法返回的是FileOutputStream对象,得到这个对象后就可以使用JAVA方式将数据写入到文件中了,以下是一段简单的示例:
public void save(){String data = "data to save";FileOutputStream out = null;BufferedWriter writer = null;try{out = openFileOutput("data", Context.MODE_PRIVATE);writer = new BufferedWriter(new OutputStreamWriter(out));writer.write(data);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null){writer.close();}}catch (IOException e){e.printStackTrace();}}}
一个保存下来输入值的具体案例
public class MainActivity extends AppCompatActivity {private EditText edit;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);edit = (EditText) findViewById(R.id.edit);}@Overrideprotected void onDestroy(){super.onDestroy();String inputText = edit.getText().toString();save(inputText);}public void save(String inputText){FileOutputStream out = null;BufferedWriter writer = null;try{out = openFileOutput("data", Context.MODE_PRIVATE);writer = new BufferedWriter(new OutputStreamWriter(out));writer.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {try {if (writer != null){writer.close();}}catch (IOException e){e.printStackTrace();}}}
}
从文件中读取数据
Context类中还有一个OpenFileInput()方法,可以从文件中读取数据,它只接收文件名参数并返回FileInputStream对象,得到这个对象后就可以用JAVA流的方式读取出来数据了
以下是一段读文本数据的示例:
public String load(){FileInputStream in = null;BufferedReader reader = null;StringBuilder content = new StringBuilder();try{in = openFileInput("data");reader = new BufferedReader(new InputStreamReader(in));String line = "";while((line = reader.readLine()) != null){content.append(line);}} catch (IOException e) {e.printStackTrace();} finally {if (reader != null){try{reader.close();}catch (IOException e){e.printStackTrace();}}}return content.toString();}
onCreate()方法中调用 load()方法来读取文件中存储的文本内容,如果读到的内容不为null,就调用EditText的setText()方法将内容填充到EditText里,并调用setSelection()方法将输入光标移动到文本的末尾位置以便于继续输人,然后弹出一句还原成功的提示。
注意,上述代码在对字符串进行非空判断的时候使用了 Textutils.isEmpty()方法,它可以一次性进行两种空值的判断。当传入的字符串等于 null 或者等于空字符串的时候,这个方法都会返回 true,就不用再分别单独判断了。
相关文章:
【安卓开发】数据存储全方案--详解持久化技术
读书笔记系列:第一行代码 Android 6.1 持久化技术简介 三种数据持久化方式:文件存储、SharedPreference存储以及数据库存储,除此之外还可以存储在SD卡中(不安全) 6.2 文件存储 该方法不对存储的内容做格式化处理都…...
Vue项目实战
一、产品开发的大致流程 一般公司流程如下: 1、产品经理设计产品原型图 2、UI设计师设计符合需求的原型UI图 3、前端100%还原高保真UI设计图 4、后端设计接口 5、前后端接口联调 6、前后端功能自测 7、测试、运维进行产品的测试和上线 一般大型公司流程如下&…...
Github 学生优惠包 -- 最新防踩坑指南
Github学生优惠包的申请最近越来越麻烦,里面有非常多的坑,留下此文防止各位申请的时候踩到。 此文面向中国大陆真正有学生身份的同学!!! 文章目录前言1.用到的网址2.申请所需3.详细步骤4.踩坑点前言 记得在一年以前还…...
2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(二)
前言 资源放CSDN上面过不了审核,都快结束了都没过审真的麻了,订阅专栏的同学直接加我微信直接发你。我只打造优质专栏。专注建模四年,博主参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。此专栏的目的就是为了让零基础快速使…...
第47章 后端管理首页与Axios拦截守卫原理
1 404全局拦截 1.1 定义布局页:src\views\ 404View.vue <template> <el-container> <el-main> </el-main> <el-footer> <h1>大人,你要找的页面离家出走了!小的正在努力寻找中…</h1> </el-fo…...
【前端】小程序开发入门:安装开发工具、目录结构与项目配置
文章目录前期准备目录结构app.jsonpageswindow其他前期准备 开发小程序要先申请一个对应的AppID:微信小程序 (qq.com) 微信官方小程序开发文档:微信开放文档 (qq.com) 然后安装一个小程序开发工具: 选择稳定版: 安装后打开&…...
Java反序列化漏洞——CommonsBeanutils1链分析
一、了解Apache Commons BeanutilsApache Commons Beanutils 是 Apache Commons 工具集下的另一个项目,它提供了对普通Java类对象(也称为JavaBean)的一些操作方法。在Java中,有很多class的定义都符合这样的规范若干private实例字段…...
三菱PLC的MC协议配置说明
三菱PLC的MC协议配置说明先说一下弱智的踩坑记录详细配置过程1、三菱Q02H CPUQJ71E71-100以太网模块设置MC协议1.1 PLC编程线连接与编程线驱动安装1.2 PLC通讯测试1.3 PLC MC协议设置1.4 PLC断点重启1.5 网络调试助手测试2、三菱Q03UDE CPU内置以太网设置MC协议2.1 PLC编程线连…...
Python基础复习总结
文章目录Python基础复习Python的下载与安装标识符关键字模块条件、循环语句if elif elsefor循环while循环成员测试Python中的数据类型序列列表 list元组 tuple集合 set字典 dictPython关系运算算术运算符比较运算符逻辑运算符位运算符赋值运算符运算符优先级字符串表示字符串字…...
【Linux操作系统】【综合实验五 网络管理与通信】
文章目录一、实验目的二、实验要求三、实验内容四、实验报告要求一、实验目的 要求了解和熟悉Linux网络客户/服务器管理模式(client/server)与网络环境的配置;熟悉网络远程登录模式与TCP/IP常见终端命令的使用;学会使用在线通信与…...
Qt下实现不规则形状窗口显示
文章目录前言一、资源文件的添加二、初始化窗口三、重写paintEvent函数实现窗口重绘四、重写QMouseEvent相关函数实现不规则窗口的移动及关闭五、demo完整代码六、下载链接总结前言 本文实现了Qt下显示两个不规则形状的窗口demo,其中有Qt的窗口对话框和QPaintEvent…...
使用ribbon实现负载均衡
1.新建两个provider:springcloud-provider-dept-8002 2. 配置跟8001一样 整合 Ribbon 由上述可知,Ribbon 是需要集成在消费端的 所以在消费端 : springcloud-03-consumer-dept-8082 进行修改 在 POM 文件中添加 Ribbon、Eureka 依赖 <!--…...
从页面仔到工程师,前端到底在发挥什么价值
玉伯在前端圈子里摸爬滚打十几年,他对前端价值的理解是什么样的?在他眼里,前端到底是一个怎样的岗位?我们带着这样的问题向他提问。支付宝体验技术部是前端同学最希望加入的团队之一,玉伯带领这个团队做出诸多创新产品…...
Java程序员进阶宝典,让你学习面试无忧!
心净则明,心诚则灵如果你想要一个月速成程序员,那么这篇文章不适合,如果你仅想要在IT圈“耍酷”,那你也不需要研读,如果你执着询问“退化”成为一名程序猿有啥捷径,那我只能告诉你,此路不通!不可…...
Hadoop HDFS的主要架构与读写文件
一、Hadoop HDFS的架构 HDFS:Hadoop Distributed File System,分布式文件系统 1,NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小一个Block在…...
面试题练习第五篇
面试题第五篇1. 说说React生命周期中有哪些坑?如何避免?2. 说说Real diff算法是怎么运作的?3. 调和阶段setState干了什么?4. 说说redux的实现原理是什么,写出核心代码?5. React合成事件的原理?6…...
hadoop02【尚硅谷】
HDFS 大数据学习笔记 一、HDFS产出背景及定义 HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件&#x…...
Alist ——本地网盘管理器
Alist ——本地网盘管理器 一、下载工具 Alist https://github.com/alist-org/alist二、启动登录 进入下载好的文件中,在地址栏输入cmd进入命令行启动 进入命令行输入 alist start启动 记住密码,和端口进入浏览器 输入 :127.0.0.1:5244用…...
【白话科普】聊聊网络架构变革的关键——SDN
最近二狗子在网上冲浪的时候,不小心将 CDN 搜索成了 SDN,结果跳出来了一大堆相关的知识点。 好学的二狗子当然不会随随便便糊弄过去,于是认认真真学习了好久,终于了解了 SDN 是什么。 原来,SDN 的全称是 Software De…...
go gin学习记录4
环境 环境:mac m1,go version 1.17.2, goland, mysql 除了原生sql,和orm操作之外,go还有一类包,只用于生成sql,典型的如sqlbuilder,今天就来研究一下它。 安装sqlbuil…...
Zotero Duplicates Merger:5分钟实现文献库高效整理的终极指南
Zotero Duplicates Merger:5分钟实现文献库高效整理的终极指南 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 还在为学术文献库中…...
crypto-js —— 前端数据安全的 JavaScript 加密利器
1. 为什么前端开发需要数据加密? 想象一下这样的场景:你在网上填写了一份包含个人信息的表单,点击提交后,这些数据会以明文形式在网络中传输。如果有人在传输过程中截获了这些数据,你的隐私就会完全暴露。这就是为什么…...
2025届最火的六大降重复率助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 能降低AIGC检测率的关键之处在于模拟人类写作所具备的自然性以及逻辑跳跃。其一,…...
cryptocurrency-icons 的4种样式详解:从黑白到彩色全解析
cryptocurrency-icons 的4种样式详解:从黑白到彩色全解析 【免费下载链接】cryptocurrency-icons A set of icons for all the main cryptocurrencies and altcoins, in a range of styles and sizes. 项目地址: https://gitcode.com/gh_mirrors/cr/cryptocurrenc…...
VS Code官宣:全面支持Rust!
当"宇宙第一编辑器"遇上"内存安全的叛逆少年",这场联姻比想象中更甜~最近微软悄悄放了个大招:VSCode 要深度集成 rust-analyzer 了! 🎉 什么意思呢?以前你用 VSCode 写 Rust࿰…...
实战指南:基于快马平台构建企业级openclaw启动框架,涵盖多任务与监控
实战指南:基于快马平台构建企业级openclaw启动框架,涵盖多任务与监控 在实际项目中,openclaw作为一款强大的数据抓取工具,其启动过程往往需要适配复杂的业务场景。传统的单任务启动方式已经无法满足企业级需求,我们需…...
跨平台创意工坊下载工具:突破游戏平台限制的开源解决方案
跨平台创意工坊下载工具:突破游戏平台限制的开源解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 当你在Epic Games平台免费领取了《求生之路2》,…...
3大核心突破让League-Toolkit成为英雄联盟玩家的智能游戏助手
3大核心突破让League-Toolkit成为英雄联盟玩家的智能游戏助手 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英雄联盟对局中&#…...
如何构建自修复AI系统:Seldon Core 2数据漂移检测终极指南
如何构建自修复AI系统:Seldon Core 2数据漂移检测终极指南 【免费下载链接】seldon-core An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models 项目地址: https://gitcode.com/gh_mirrors/se/seldon-cor…...
零基础入门CGCNN:3步用AI预测材料属性的神奇工具
零基础入门CGCNN:3步用AI预测材料属性的神奇工具 【免费下载链接】cgcnn Crystal graph convolutional neural networks for predicting material properties. 项目地址: https://gitcode.com/gh_mirrors/cg/cgcnn 想用人工智能预测新材料性能却不知从何入手…...
