【uniapp】在UniApp中实现持久化存储:安卓--生成写入数据为jsontxt
在移动应用开发中,数据存储是一个至关重要的环节。对于使用UniApp开发的Android应用来说,缓存(Cache)是一种常见的数据存储方式,它能够提高应用的性能和用户体验。然而,缓存数据在用户清除缓存或清除应用数据后会被删除。如果你的应用需要在这些操作后仍然保留某些关键数据,就需要考虑其他持久化存储方案。
uniapp调用示例传送门
本文将介绍如何利用H5plus的native功能,通过引入Java类,将数据存储到本地文件中,从而实现数据的持久化。
目录
- 为什么选择本地文件存储?
- 实现步骤
- 1. 引入必要的Java类
- 2. 读取本地文件
- 3. 写入本地文件
- 4. 权限设置
- 总结
为什么选择本地文件存储?
在UniApp中,数据通常以缓存的形式存储在本地。这种方式虽然简便且高效,但存在一个明显的缺点:缓存数据容易被用户清除。当用户在应用设置中清除缓存或清除应用数据时,所有缓存的数据都会丢失。如果你的应用需要保留一些关键数据,例如用户设置、配置信息或重要的用户数据,那么就需要一种更持久的数据存储方式。
本地文件存储提供了一种可靠的解决方案。通过将数据写入设备的文件系统中,即使缓存被清除,这些文件依然存在,数据得以保留。
实现步骤
1. 引入必要的Java类
由于我们需要在Android环境中操作文件系统,因此需要使用Java的IO类。通过H5plus的plus.android.importClass方法,我们可以导入这些类:
const File = plus.android.importClass('java.io.File');
const BufferedReader = plus.android.importClass('java.io.BufferedReader');
const FileReader = plus.android.importClass('java.io.FileReader');
const FileWriter = plus.android.importClass('java.io.FileWriter');
2. 读取本地文件
以下是一个读取本地JSON文件的函数:
function readJsonByFile(fileNamePath) {const readFr = new File(fileNamePath);try {const reader = new BufferedReader(new FileReader(readFr));let txt;let retxt = '';let flag = true;while (flag) {txt = reader.readLine(); // 读取文件if (txt == null) {flag = false;break;}retxt += txt;}return retxt;} catch (e) {console.log(e);return '';}
}
使用示例:
const settingJsonPath = '/storage/emulated/0/Download/你的文件夹/配置.json';
const jsonData = readJsonByFile(settingJsonPath);
console.log(jsonData);
3. 写入本地文件
以下是一个写入本地JSON文件的函数:
function writeJsonToFile(json, fileNamePath) {try {// 创建目录const n = fileNamePath.lastIndexOf('/');if (n !== -1) {const fileDirs = fileNamePath.substring(0, n);console.log(fileDirs);const directory = new File(fileDirs);if (!directory.exists()) {const a = directory.mkdirs(); // 不存在创建目录console.log(a);}}// 创建文件const file = new File(fileNamePath);if (!file.exists()) {file.createNewFile(); // 创建文件}// 写入文件const fos = new FileWriter(fileNamePath, false);fos.write(json);fos.close();return true;} catch (e) {console.log(e);return false;}
}
使用示例:
const settingJsonPath = '/storage/emulated/0/Download/你的文件夹/配置.json';
const jsonData = {"主键": "值","数组": [1, 2, 3],"嵌套对象": {"子键": "子值"}
};
const success = writeJsonToFile(JSON.stringify(jsonData), settingJsonPath);
if (success) {console.log("文件写入成功");
} else {console.log("文件写入失败");
}
4. 权限设置
在Android 6.0(API 23)及以上版本,存储权限需要动态申请。即使你在manifest中声明了存储权限,用户仍然需要在运行时授予权限。以下是申请存储权限的示例:
// 请求存储权限
plus.android.requestPermissions(["android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"],function(e) {if (e.granted) {console.log("权限已授予");} else {console.log("权限被拒绝");}},function(e) {console.log("请求权限失败");}
);

注意事项:
- 路径选择:从Android 11(API 30)开始,访问外部存储的规则有所变化。建议使用应用专属的目录,例如
/storage/emulated/0/Android/data/你的包名/files/,以避免权限问题。 - 错误处理:在实际应用中,建议添加更多的错误处理逻辑,例如处理文件不存在、读写失败等情况。
- 数据格式:确保写入和读取的数据格式一致,避免因格式不匹配导致的数据解析错误。
总结
通过将数据存储在本地文件中,你可以确保关键数据在用户清除缓存或清除应用数据后依然存在。这种方法不仅适用于UniApp,也适用于其他跨平台开发框架。关键在于合理利用原生功能,处理好权限和文件路径问题。
希望本文能帮助你更好地实现UniApp应用的持久化存储,提升用户体验和数据安全性。如果你有任何疑问或建议,欢迎在评论区留言交流!
相关文章:
【uniapp】在UniApp中实现持久化存储:安卓--生成写入数据为jsontxt
在移动应用开发中,数据存储是一个至关重要的环节。对于使用UniApp开发的Android应用来说,缓存(Cache)是一种常见的数据存储方式,它能够提高应用的性能和用户体验。然而,缓存数据在用户清除缓存或清除应用数…...
DeepSeek-R1本地部署保姆级教程
一、DeepSeek-R1本地部署配置要求 (一)轻量级模型 ▌DeepSeek-R1-1.5B 内存容量:≥8GB 显卡需求:支持CPU推理(无需独立GPU) 适用场景:本地环境验证测试/Ollama集成调试 (二&a…...
Python常见面试题的详解25
1. 什么是 MD5 加密,有什么特点 要点 定义:MD5 是一种广泛应用的哈希函数,它能够把任意长度的输入数据经过特定算法处理,转化为长度固定为 128 位的哈希值,通常以 32 位十六进制字符串的形式呈现,主要用于验…...
DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
在近两年由AI引发的生产力革命的背后,一场关乎数字世界秩序的攻防战正在上演:AI生成的深度伪造视频导致企业品牌声誉损失日均超千万,批量生成的侵权内容使版权纠纷量与日俱增,黑灰产利用AI技术持续发起欺诈攻击。 与此同时&#…...
阿里开源正式开园文生视频、图生视频模型-通义万相 WanX2.1
简介 发布时间与背景 通义万相 Wan2.1 模型于 2025年1月 发布,并迅速登顶视频生成领域权威评测 Vbench 的榜首,超越了包括 Sora、HunyuanVideo、Minimax 等国内外知名模型,并于这周开源。它是阿里云在 AI 视频生成领域的最新成果࿰…...
【Python爬虫(73)】用Python爬虫开启交通数据宝藏,畅行出行未来
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...
和鲸科技携手四川气象,以 AI 的力量赋能四川气象一体化平台建设
气象领域与农业、能源、交通、环境科学等国计民生关键领域紧密相连,发挥着不可替代的重要作用。人工智能技术的迅猛发展,为气象领域突破困境带来了新的契机。AI 技术能够深度挖掘气象大数据中蕴含的复杂信息,助力人类更精准地把握自然规律&am…...
spring boot 2.7 + seata +微服务 降级失败问题修复
文章引流 一个简单而使用的API管理工具 版本号 spring boot 2.7.17 spring-cloud-dependencies 2021.0.8 spring-cloud-circuitbreaker-resilience4j 2.1.7 spring-cloud-starter-alibaba-seata 2021.1 jdk 1.8原因分析 未配置属性 feign.circuitbreaker.enabledtrue # 未…...
python-leetcode-最长公共子序列
1143. 最长公共子序列 - 力扣(LeetCode) class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:m, n len(text1), len(text2)dp [[0] * (n 1) for _ in range(m 1)]for i in range(1, m 1):for j in range(1, n …...
centos 7 停更后如何升级kernel版本 —— 筑梦
centos 6/7 内核升级(bios/uefi两种引导方式) —— 筑梦之路_centos7 更新efi-CSDN博客 此处主要说明kernel rpm离线包可以从哪里下载,安装升级参考之前的文章 # 历史kernel版本rpm包http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/…...
WPF-3天快速WPF入门并达到企业级水准
嘿,小伙伴们!如果你已经有一定的C#开发基础,但想快速掌握WPF开发,达到企业级水准,那接下来的这个三天快速入门计划绝对适合你!虽然听起来有点挑战,但别担心,只要跟着这个高强度、结构…...
爬虫反爬:CSS位置偏移反爬案例分析与实战案例
文章目录 1. 反爬机制概述2. 反爬原理3. 案例分析4. 破解思路5. 实战样例样例1:使用Python和Selenium破解CSS位置偏移反爬样例2:电商网站商品列表CSS位置偏移反爬破解 6. 总结 1. 反爬机制概述 CSS位置偏移反爬是一种常见的反爬虫技术,通过C…...
Ubuntu20.04安装Redis
目录 切换到root用户 使用 apt install redis 安装redis 修改配置文件 编辑 重新启动服务器 使用Redis客户端连接服务器 切换到root用户 如果没有切换到root用户的,切换到root用户。 使用 apt install redis 安装redis 遇到y/n直接y即可。 redis安装好之…...
Ubuntu 22.04 安装Nvidia驱动加速deepseek
一键安装22.04 nvidia 驱动 nvidia 官网下载驱动我的环境是NVIDIA RTX A5000nvidia 文档参考没有安装驱动之前确认自己的型号 lspci | grep -i vga (如数字2231) 参考docker 支持nvidia ,注释了需要的取消注释即可 42行-92行一定要重启服务器…...
OkHttp、Retrofit、RxJava:一文讲清楚
一、okHttp的同步和异步请求 Call 是 OkHttp 的核心接口,代表一个已准备好执行的 HTTP 请求。它支持 同步 和 异步 两种模式: enqueue——>okHttp异步 OkHttpClient client new OkHttpClient();Request request new Request.Builder().url("…...
星环科技推出DeepSeek全场景解决方案:即开即用、企业级部署、端侧智能三位一体
星环科技(688031.SH)正式发布DeepSeek全场景解决方案,全面覆盖个人用户、企业客户及行业场景需求,为用户提供从个人到企业、从云端到本地的全方位AI应用支持,为不同需求的用户提供了灵活、高效且安全的AI解决方案。 省…...
Redis缓存一致性难题:如何让数据库和缓存不“打架”?
标题:Redis缓存一致性难题:如何让数据库和缓存不“打架”?(附程序员脱发指南) 导言:当数据库和缓存成了“异地恋” 想象一下:你刚在美团下单了一份麻辣小龙虾,付款后刷新页面&#…...
动态部署Web应用程序与web.xml配置详解
文章目录 前言一、动态部署Web应用程序1.1 什么是动态部署?1.2 动态部署的步骤1.3 动态部署的优势 二、web.xml 配置文件2.1 什么是web.xml?2.2 web.xml 文件的结构2.2.1常见配置(1) 配置上下文参数(2) 配置Servlet(3)配置过滤器(…...
2025年软考报名费用是多少?全国费用汇总!
软考报名时间终于确定了!想要参加2025年软考的同学们注意啦!特别是那些一年只有一次考试机会的科目,千万不要错过哦!这里为大家整理了各地的报名时间、科目、费用等信息,快来看看吧! 一、2025年软考时间安…...
DeepSeek 15天指导手册——从入门到精通 PDF(附下载)
DeepSeek使用教程系列--DeepSeek 15天指导手册——从入门到精通pdf下载: https://pan.baidu.com/s/1PrIo0Xo0h5s6Plcc_smS8w?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/2e8de75027d3 《DeepSeek 15天指导手册——从入门到精通》以系统化学习路径为核心&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
