数据存储方案-持久化存储

Unity 持久化数据存储完整解决方案(persistentDataPath实现) persistentDataPath:此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件;是一个可读写的目录;将游戏运行时需要的可读写的文件模板放到只读文件夹“StreamingAssets”,手机首次运行时再拷贝到可读写的目录“Application.persistentDataPath”,如下实例,游戏在手机平台首次运行时将我们的数据模板文件”data.txt”拷贝到“persistentDataPath”目录,以便于以后在手机端游戏运行时实时读写。 阅读详情
概述:

任何一个应用程序,其实说白了就是在不停地和数据打交道,例如QQ,新闻,刷微博等等,所关心的都是里面的数据,没有数据的应用程序就变成了一个空壳子,对用户来说没有实际的用途。那么这些数据都是从哪里来的呢?现在多数的数据基本都是由用户产生的,比如发微博,评论新闻,其实都是在产生数据。而这些数据又分为两种,第一种是瞬时数据,瞬时数据是指存储在内存当中,有可能因为程序关闭或者其他原因导致内存被回收而丢失的数据。这对于一些关键数据是不能忍受的,如谁都不希望自己刚刚发出去一条微博,刷新一下就没有了。那么怎么保证一些关键的数据不会丢失呢?这就需要数据的持久化计数了。

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或者电脑关机的情况下,这些数据仍然不会丢失。保存在内存中的数据时处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了了一种机制可以让数据在瞬时状态和持久状态之间进行切换。

持久化技术被广泛应用于各种程序设计领域当中,本文要讲述的是Android系统中的数据持久化技术。Android系统中主要提供了三种方式用于简单的实现数据持久化功能。即 文件存储、SharedPerence存储以及数据库存储。当然,除了上述三种方式外,还可以将数据存储在手机的SD卡中,不过使用文件、SharedPerence、数据库三种方式来保存数据会相对更简单一些,而且相比将数据保存在SD卡中会更加安全。

一 文件存储

文件存储是Android系统中最基本的一种数据存储方式,它不对存储的内容进行任何格式化处理,所有数据都是原封不动的保存到文件当中,因而它比较合适与存储一些简单的文本数据或者二进制数据。如果我们想使用文件存储的方式来保存一些较为复杂的数据,就需要定义一套自己的格式规范,这样可以方便以后将数据从文件中重新解析出来。

1.1 将数据存储到文件中

Context类中提供了一个 openFileOutput()方法,可以用于将数据储存到指定的文件中。该方法有两个参数,第一个参数是文件名,在文件创建的时候使用的就是这个名称,注意这里指定的文件名不可以包含路径,因为所有的文件都是默认存储到 /data/data//files/目录下的。第二个参数是文件的操作模式,主要有两种工作模式可选,MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE是默认的操作模式,表示当指定同样文件名的时候,所写入的内容将会覆盖源文件中的内容,而MODE_APPEND则表示如果该文件已经存在,就往文件里面追加信息内容,不存在就创建新文件。其实文件的操作模式还有另外两种:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,这两种模式表示允许其他的应用程序对我们的程序中的文件进行读写操作,不过由于这两种模式过于危险,很容易引起应用的安全漏洞,已经在Android4.2版本中被废弃。

openFileOutput()方法返回的是一个 FileOutputStream对象,得到这个对象之后就可以使用Java流的方式将数据写到文件当中了。下面是是将一段文本内容存储到文件中代码范例:

package com.android.mhrtest0;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.EditText;
import java.io.FileOutputStream;
import java.io.BufferedWriter;
import android.content.Context;
import java.io.OutputStreamWriter;
import java.io.IOException;

public class MainActivity extends Activity {
	private final static String LOG_TAG = "test0.MainActivity";
 
	FileOutputStream out = null;
	private String message = "pppppppppppppppppppppp";
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		try {
			out = openFileOutput("data.txt",Context.MODE_PRIVATE + Context.MODE_APPEND +  Context.MODE_WORLD_READABLE);
			byte[] data = message.getBytes();
			out.write(data);
			out.flush();
			
		} catch (IOException e) {
			e.printStackTrace();
			} finally {
				try {
					if (out != null){
						out.close();
					}
				}catch (IOException e){
					e.printStackTrace();
				}
		}
		Log.i(LOG_TAG, "MainActivity Created.");
	}

二 SharedPreferences 存储

不同于文件存储方式,SharedPreferences是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的数值取出来。而且 SharedPreferences还支持多种不同类型的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据类型也是整型的,如果存储
的数据类型是一个字符串,那么读取出来的数据仍然是字符串。

2.1 将数据存储到 SharedPreferences 中

要想使用SharedPreferences来存储数据,首先需要获取到 SharedPreferences对象,Android中主要提供了三种方法
用于得到 SharedPreferences 对象。

方法1 Context类中的 getSharedPreferences() 方法

此方法接收两个参数,第一个参数用于指定 SharedPreferences 文件名称,如果指定的文件不存在,则会创建一个,
SharedPreferences 文件都是存放在 /data/data//shared_prefs/目录下的。第二个参数用于指定
操作模式,目前只有 MODE_PRIVATE这一种模式可选,它是默认的操作模式,和直接传入0效果是相同的,表示只有当前
的应用程序才可以对这个 SharedPreferences 文件进行读写。其他几种操作模式均已被废弃。

方法2 Activity类中的 getPreferences()方法
这个方法和 Context中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时
会自动将当前活动的类名作为 SharedPreferences 的文件名。

方法3 PreferenceManager类中的 getDefaultSharedPreferences()方法1
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences文件。得到了
SharedPreferences对象之后,就可以开始向 SharedPreferences文件中存储数据了,

方法1实例:

39、iOS 数据存储与持久化方案详解 本文详细介绍了iOS开发中数据持久化的三种常见方法:NSUserDefaults、文件存储和Core Data。通过具体的代码示例,分别演示了它们的使用场景及实现方式。文章还对比了不同方法的优缺点,帮助开发者根据需求选择合适的数据持久化方案。 阅读详情

相关推荐

EMC(6)——电磁场的屏蔽

假如,机箱没有开口缝隙,比如篮球这种壳体,屏蔽效能都能达到100dB,100dB,基本上把电磁场强度能衰减万倍的关系,所以,这种方式屏蔽效能非常高。一般,钣金机箱,缝隙很大,大家目视就可以看到,铝铣的机箱,比较平整,但实际情况,表面其实也是坑坑洼洼,只是,大家肉眼看不出来而已!这种安装方式,是直接在缝隙增加导电材料,存在一个问题,就是,手法温柔点,压缩度会不够,手法粗暴点,过度压缩。所以,不是说,用金属机箱就能起到屏蔽效果,重要的是,要做好机箱孔缝电磁兼容设计,否则,是金属机箱,也是摆设。

qq_39825125的博客 2180

Redis 持久化存储详解

Redis持久化存储详解 文章目录Redis持久化存储详解1、前言2、RDB 数据快照2.1 什么是RDB持久化2.2 RDB 持久化配置2.3 持久化方式2.4 bgsave持久化存储实现原理3、AOF 日志追加3.1 什么是AOF持久化3.2 AOF的持久化配置3.3 AOF的原理4、总结 1、前言 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 R...

烟雨gps 579

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5933

数据持久化怎么理解

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称.。 狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中; 广义的理解,“持久化”包括和数据库相关的各种操作。数据持久化对象的基本操作有:保存、更新、删除、加载、查询等。 ●保存:把域对象永久保存到数据库。 ●更新:更新数据库中域对象的状态。 ●删除:从数据...

山鬼谣弋痕夕的博客 2690

工作中SVN的使用,保姆级教程!

SVN是一款集中式版本控制系统,采用客户端-服务器模式管理代码版本。与Git相比,SVN在目录权限控制、大型二进制文件处理等方面具有优势,适合特定场景使用。本文介绍了SVN的安装方法、基本操作(检出、提交、更新、回滚等)以及分支管理(创建、合并、切换)。同时讲解了文件冲突的解决方法,并演示了如何在IDEA中集成SVN工具。SVN虽然逐渐被Git取代,但在某些特定场景下仍是可靠选择,工具选择应基于团队和项目需求。

胜人者有力,自胜者强! 1851

jieba分词

jieba

sikh_0529的博客 1万+

关于持久性存储您了解多少?类型,架构及与容器持久化存储

本文通过探索持久性存储的类型、架构和使用案例,深入研究了持久性存储。它还提供了一个实践演示,说明Docker中卷存储和持久化卷存储之间的区别。

WPHunter的编程技术资料库! 1861

趋势跟踪策略

/ 绘制K线图的下跌部分,使用绿色标记 stickline(close>=open,high,close,1,1,colorgreen);end // 在图表上绘制当前趋势的图标,如果trend=1或-1 drawicon(trend=1,stopprice,10);end // 绘制K线图的上涨部分,使用红色标记 stickline(close>=open,high,close,1,1,colorred);

2401_84919512的博客 353

Redis 高级

持久化 redis.conf 事务 集群

LuckyGuyy的博客 246

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 178

中国国家级地面气象站基本气象要素日值数据集(V3.0)

气温数据TEM, 包括站点编号(sid), 纬度(lat), 经度(long), 高程(elev), 年(year), 月(month),日(day), 平均气温(tmean), 最高气温(tmax), 最低气温(tmin)气压数据PRS, 包括站点编号(sid), 纬度(lat), 经度(long), 高程(elev), 年(year), 月(month),日(day), 平均气压(pmean), 最高气压(pmax), 最低气压(pmin)中国国家级地面气象站基本气象要素日值数据集(V3.0)

J_Giser的博客 3892

第6章 数据存储全方案——详解持久化技术

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。持久化技术被广泛应用于各种程序设计的领域当中,而本书中要探讨的自然是Android中的数据持久化技术。Android系统中主要提供了3种方式用于简单地实现数据持久化功能,即文件存储、SharedPreferences存储以及数据库存储。

Roderick888888的博客 1175

使用MATLAB/Simulink对一个简单的智能家居温湿度监测与控制系统进行建模和仿真

目录手把手教你学Simulink——基于Simulink的智能家居温湿度监测与控制仿真建模示例一、背景介绍二、所需工具和环境三、步骤详解步骤1:创建Simulink模型步骤2:构建传感器模块步骤3:添加控制器步骤4:构建执行器模块步骤5:连接各部分步骤6:设置仿真参数步骤7:添加观测器步骤8:运行仿真并分析结果四、总结 智能家居系统中的温湿度监测与控制系统是一个典型的物联网(IoT)应用场景,它通过传感器收集环境数据,并根据预设条件自动调节室内温度和湿度以提高居住舒适度。本指南将介绍如何使用MATLAB/S

xiaoheshang_123的博客 291

Kubernetes 数据存储方案全解析:从临时存储到持久化实战

步骤2:创建 PersistentVolumeClaim (PVC)步骤1:创建 PersistentVolume (PV)动态存储类(StorageClass)步骤3:挂载到 Deployment。二、持久化存储方案(生产环境必备)一、临时存储方案(测试环境适用)适合场景:临时缓存、中间计算结果。Pod 创建时自动分配空目录。数据存储在特定节点目录(如。:生命周期与 Pod 绑定。Pod 删除后数据立即丢失。节点故障会导致数据永久丢失。:节点本地存储(慎用!单节点调试(禁用生产)

weixin_67144977的博客 291

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

每日面试题-Android 持久化数据存储方案有哪些?

基于XML文件,仅支持基本数据类型(String/Int/Boolean等):异步/响应式数据存储(Kotlin协程 + Flow支持):简单配置项、用户偏好设置等小数据量存储。:非结构化数据(文本、图片、音视频等):结构化数据存储(复杂查询、事务支持):跨应用数据共享(如通讯录、媒体库):通过URI机制实现数据访问,需配合。(Jetpack组件)

weixin_45422672的博客 558

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Krati:高性能持久化数据存储解决方案

Krati:高性能持久化数据存储解决方案 项目介绍 Krati 是一款简单且高效的持久化数据存储解决方案,专为需要高吞吐量和极低延迟的读写密集型应用设计。Krati 的核心目标是通过简化配置、性能调优和 JVM 垃圾回收管理,帮助开发者快速集成并提升应用性能。无论是处理大规模数据还是需要快速响应的应用场景,Krati 都能提供卓越的性能表现。 项目技术分析 Krati 的核心库 krati.jar...

gitblog_00317的博客 682

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

day05 数据存储方案,详解持久化技术

1. 数据持久化技术简介 什么是瞬时数据? 瞬时数据指的是那些存储在内存当中的数据,这些数据由于内存被回收或者程序被意外终止之后又可能丢失. 2.数据持久化技术的引入的必要性: 有一些关键性重要的数据,我们不希望由于内存的回收而丢失,这个时候就需要数据持久化技术. 数据持久化技术就是讲那些内存中的瞬时数据保存到存储设备中,保证即使在电脑或手机关机的情况下, 这些数据依然不会丢失.保存内存中的

FioManGeYaMeng的博客 715

Android数据存储全方案——持久化技术

数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失。保存在内存中的数据是处于瞬时状态的,而保存在存储设备 中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。 持久化技术被广泛应用于各种程序设计的领域当中,而本次要探讨的自然是Android中的数据持久化技术。Android系统中主要提供了3种方式用于简单地实现数据持久化功能,即文件存储,SharedPreferences存储以及数据库存...

m0_49491001的博客 4146

Android数据存储方案之持久化技术—SharedPreferences存储

Android—SharedPreferences存储 SharedPreferences是使用键值对的方式来存储数据的 保存数据需要给该数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来 SharedPreferences支持多种不同的数据类型存储,入:int,String,boolean等 获取SharedPreferences对象(3种获取方式) Context...

大树 440

数据存储全方案,详解持久化技术

任何一个应用程序,其实就是不停地与数据打交道,我们聊微信、看新闻所关心地都是里面地数据,没有数据地应用程序就变成一个空壳子,对用户来说没有任何实际用途。那么这些数据是从哪里来的呢?现在多数地数据基本都是由用户产生的,比如微信发朋友圈、评论,其实都是在产生数据。 数据可以分为瞬时数据和持久化数据。所谓瞬时数据是指哪些存储在内存中,有可能会因为程序关闭或其他原因导致内存被回收而丢失的数据。比如:在登录页面数据账号和密码。持久化数据就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或计算机关机的情况下,

qq_36828822的博客 1525

《数据存储全方案——详解持久化技术》笔记

Android系统中实现数据持久化功能的3种方式 文件存储、SharedPreference存储以及数据库存储 SharedPreferences存储 SharedPreferences是使用键值对的方式来存储数据的。 将数据存储到SharedPreferences中 首先需要获得SharedPreferences对象。Android中主要提供了3种方法得到SharedPreferences对象 ...

qq_42204595的博客 245

Android数据存储方案之持久化技术—文件存储

Android数据存储方案之持久化技术—文件存储 持久化技术简介 数据化持久化是指将那些内存中瞬时数据保存到存储设备中,保证即使手机或电脑关机的情况下,这些数据仍然不会丢失。 Android文件存储 文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有的数据都是原封不动地保存到文件当中 适合存储一些简单的文本数据或二进制数据 1.将数据存储到文件中 ...

大树 376

终极指南:boardgame.io状态持久化方案与数据存储策略详解

boardgame.io是一个强大的开源框架,专门用于构建回合制游戏的状态管理和多人网络功能。对于游戏开发者来说,实现可靠的状态持久化是确保游戏数据安全、支持断线重连和提供稳定多人体验的关键。本文将深入探讨boardgame.io的状态持久化方案,为您提供完整的数据存储策略指南。😊 ## 📊 为什么状态持久化如此重要? 在多人游戏中,状态持久化意味着游戏数据能够在服务器重启、网络中断或玩家

gitblog_00481的博客 474

【Python中常用的持久化方法】数据存储方案

本文详细介绍了Python中常用的数据持久化方法,分为五大类:文件存储(文本/二进制)、序列化模块(Pickle/JSON)、数据库存储(SQLite/ORM/Shelve)、其他格式(CSV/配置文件)以及综合对比。每种方法均附代码示例、优缺点分析及适用场景,如文本文件简单易读但查询困难,Pickle支持复杂对象但安全性低,SQLite适合本地结构化数据等。最后给出选择建议:简单数据用文本/JSON,复杂对象用Pickle,结构化查询用SQLite/ORM,并强调需权衡安全性、兼容性与需求规模。

qq_33764107的博客 689

数据存储方案:持久化技术

文件存储 1 Context类提供了一个openFileOutput()方法,用于将数据存储到指定的文件中,该方法返回看看一个FileOutputStream对象, 通过FileOutputStream对象构建一个OutputStreamWriter对象,再根据OutputStreamWriter对象构建一个BufferedWriter对象,根据BufferedWriter的write()方法的

weixin_38032755的博客 280
上一篇: Linux摄像头驱动第一篇之虚拟摄像头驱动vivi.c
下一篇: 改变
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值