uniapps使用HTML5的io模块拷贝文件目录

news2025/1/22 5:14:42

最近在集成sqlite到uniapp的过程中,因为要将sqlite数据库预加载,所以需要使用HTML5的plus.io模块。使用过程中遇到了许多问题,比如文件路径总是解析不到等。尤其是应用私有文档目录’_doc’。

根据官方文档:

为了安全管理应用的资源目录,规范对文件系统的操作,5+ API在系统应用目录的基础设计了应用沙盒目录, 分为私有目录和公共目录两种类型,私有目录仅应用自身可以访问,公共目录在多应用环境时(如小程序SDK)所有应用都可访问。

应用私有资源目录,对应常量plus.io.PRIVATE_WWW,仅应用自身可读
应用私有文档目录,对应常量plus.io.PRIVATE_DOC,仅应用自身可读写
应用公共文档目录,对应常量plus.io.PUBLIC_DOCUMENTS,多应用时都可读写,常用于保存应用间共享文件
应用公共下载目录,对应常量plus.io.PUBLIC_DOWNLOADS,多应用时都可读写,常用于保存下载文件

plus.io.PRIVATE_WWW表示’_www’目录,实际值为1;plus.io.PRIVATE_DOC表示"__doc"目录,实际值为2;

因此不能把他们简单等同,要看方法需要的参数类型是什么。如果需要的参数类型是number,就使用常量,如果类型是string,则使用具体url路径。

别的不说了先,官方文档还是得仔细读读,虽然存在5%的小错误,但是还是可以提供帮助。

上代码!

我的需求是将数据库文件fit_path_app.db从_www拷贝到__doc目录下。该文件在项目中位于/static/database目录下,我是直接把整个目录拷贝到doc/db/目录下。

关于doc为什么直接使用字符串而不是本地文件路径,因为我发现如果在初始化时使用本地文件路径会解析地址失败,但是直接使用字符串则不会。原因不详。

最终使用下面的方法,目前在uniapp真机运行和使用mumu模拟器的情况下测试拷贝成功了,实体机测试晚点再看看,应该也问题不大。

<script>
	export default {
		onLaunch: function() {
			const sourcePath = plus.io.convertLocalFileSystemURL('_www/static/database');
			// const targetRootPath = plus.io.convertLocalFileSystemURL('_doc/')
			const targetRootPath = '_doc/'
			// const targetFilePath = plus.io.convertLocalFileSystemURL('_doc/fit_path_app.db')
			const targetFilePath = 'db/'
			const paths = {
				source: sourcePath,
				targetRoot: targetRootPath,
				targetFile: targetFilePath
			}
			console.log('源和目标路径:',JSON.stringify(paths));
			
			plus.io.resolveLocalFileSystemURL(sourcePath,function(srcEntry) {
				plus.io.resolveLocalFileSystemURL(targetRootPath,function(targetEntry) {
					// 拷贝
					srcEntry.copyTo(targetEntry,targetFilePath,function(entry) {
						console.log('拷贝成功:',entry.fullPath);
					},function(e) {
						conso.error('拷贝失败:',JSON.stringify(e));
					})
				}, function(e){
					console.error('解析目标地址失败:',JSON.stringify(e))
				})
			}, function(e) {
				console.error('解析源地址失败:',JSON.stringify(e))
			})
			console.log('Database initialized successfully.');
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git处理冲突详解

文章目录 Git处理冲突详解一、引言二、冲突产生的原因三、解决冲突的步骤1. 手动解决冲突1.1 查看冲突文件1.2 编辑冲突文件1.3 提交解决冲突 2. 使用合并工具解决冲突 四、使用示例五、总结 Git处理冲突详解 一、引言 在团队协作开发中&#xff0c;Git冲突是不可避免的。当多…

如何降低振荡器的相位噪音

相位噪音&#xff08;Phase Noise&#xff09;是振荡器设计中一个重要的性能指标&#xff0c;尤其在高精度和高频应用中。相位噪音不仅影响信号的质量&#xff0c;还可能对后续系统的性能造成显著影响。因此&#xff0c;如何有效降低振荡器的相位噪音成为了科研与工业界关注的热…

一文读懂 RocketMQ:从概念到架构与应用原理概述

文章目录 概述架构说明核心组件核心概念 namesvrproducer默认实现producer启动消息发送 broker-mq核心基本模型集群模型内部模型存储机制高可用 consumerpush类型push流程pull类型 概述 随着分布式技术在业内的快速应用&#xff0c;mq&#xff08;消息队列&#xff09;做为不可…

算法日记8:StarryCoding60(单调栈)

一、题目 二、解题思路&#xff1a; 题意为让我们找到每个元素的左边第一个比它小的元素&#xff0c;若不存在则输出-1 2.1法一&#xff1a;暴力&#xff08;0n2&#xff09; 首先&#xff0c;我们可以想到最朴素的算法&#xff1a;直接暴力两层for达成目标核心代码如下&…

map和set的使用(一)详解

文章目录 序列式容器和关联式容器map和set的介绍set构造和迭代器遍历和insertfinderaseswapclearcountlower_bound和upper_boundmultiset和set的对比 set的二个题目题目解析算法原理代码介绍一个找差集的算法同步算法题目解析算法原理代码 map构造遍历initiaizer_list 序列式容…

CSS布局与响应式

学习链接 Grid网格布局 前端五大主流网页布局 flex布局看这一篇就够了 grid布局看这一篇就够了 用六个案例学会响应式布局 伸缩盒响应式页面布局实战 实现响应式布局的五种方式 - csdn 如何完成响应式布局&#xff0c;有几种方法&#xff1f;看这个就够了 响应式布局总…

P6周:VGG-16算法-Pytorch实现人脸识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境&#xff1a;Python 3.8.12 编译器&#xff1a;jupyter notebook 深度学习环境&#xff1a;torch 1.12.0cu113 一、前期准备 1.设置GPU im…

Git:问题解决办法 及 Tips 总结

目录 查看历史记录及比较区别查看所有提交的历史记录查看提交的详细历史记录查看提交之间的差异点击文件操作历史&#xff0c;筛选出所有改动过此文件的提交任意两个提交之间的比较&#xff08;开发及查BUG常用&#xff09; 在需要版本回滚的情况下处理方法短时间内无法彻查BUG…

【优选算法】----移动零

好久没写博客的兄弟姐妹们~ 今天来写一篇算法过过水吧~ --------------------------------------begin---------------------------------------- 题目要求&#xff1a; 给的难度是简单哦 题目解析&#xff1a; 这道题的思路可以借助双指针的思想&#xff0c;定义dest和c…

Solana 套利机器人原理

引言 加密货币的交易世界中&#xff0c;套利是利用市场价格差异进行无风险获利的一种策略。随着 DeFi&#xff08;去中心化金融&#xff09;的快速发展&#xff0c;套利机会屡见不鲜&#xff0c;尤其是在高速、高效能的区块链上&#xff0c;如 Solana。这些区块链通过提供低交易…

springboot自动配置原理(高低版本比较)spring.factories文件的作用

SpringBootApplication public class SpringSecurityApplication {public static void main(String[] args) {SpringApplication.run(SpringSecurityApplication.class, args);}}注解SpringBootApplication Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Doc…

总结4..

#include <stdio.h> // 定义全局变量n&#xff0c;用于表示二维数组的大小 // 定义二维数组b&#xff0c;用于标记找到单词的位置&#xff0c;初始化为0 int n, b[200][200] {0}; // 定义二维数组d&#xff0c;存储8个方向的偏移量&#xff0c;用于在二维数组中搜索…

从零开始:Spring Boot核心概念与架构解析

引言 在当今的Java开发领域&#xff0c;Spring Boot已经成为构建企业级应用的首选框架之一。它以其简洁、高效、易于上手的特点&#xff0c;极大地简化了Spring应用的开发过程。本文将从Spring Boot的核心概念入手&#xff0c;深入解析其架构设计和运行原理&#xff0c;帮助读…

深入 Flutter 和 Compose 的 PlatformView 实现对比,它们是如何接入平台控件

在上一篇《深入 Flutter 和 Compose 在 UI 渲染刷新时 Diff 实现对比》发布之后&#xff0c;收到了大佬的“催稿”&#xff0c;想了解下 Flutter 和 Compose 在 PlatformView 实现上的对比&#xff0c;恰好过去写过不少 Flutter 上对于 PlatformView 的实现&#xff0c;这次恰好…

无人机飞手考证难度增加,实操、地面站教学技术详解

随着无人机技术的快速发展和广泛应用&#xff0c;无人机飞手考证的难度确实在不断增加。这主要体现在对飞手的实操技能和地面站操作技术的要求上。以下是对无人机飞手考证中实操和地面站教学技术的详细解析&#xff1a; 一、实操教学技术详解 1. 无人机基础知识学习&#xff1…

linux下springboot项目nohup日志或tomcat日志切割处理方案

目录 1. 配置流程 2. 配置说明 其他配置选项&#xff1a; 3. 测试执行 4. 手动执行 https://juejin.cn/post/7081890486453010469 通常情况下&#xff0c;我们的springboot项目部署到linux服务器中&#xff0c;通过nohup java -jar xxx.jar &指令来进行后台运行我们…

知识图谱可视化:揭示隐藏的模式与关系

目录 前言1. 什么是知识图谱可视化1.1 知识图谱概述1.2 知识图谱可视化的定义 2. 知识图谱可视化的意义2.1 降低理解门槛2.2 帮助发现模式与洞察2.3 提升交互性与用户体验 3. 知识图谱可视化的技术实现3.1 数据处理与准备3.2 可视化技术3.3 用户交互设计 4. 知识图谱可视化的应…

深度学习基础--LSTM学习笔记(李沐《动手学习深度学习》)

前言 LSTM是RNN模型的升级版&#xff0c;神经网络模型较为复杂&#xff0c;这里是学习笔记的记录&#xff1b;LSTM比较复杂&#xff0c;可以先看&#xff1a; 深度学习基础–一文搞懂RNN 深度学习基础–GRU学习笔记(李沐《动手学习深度学习》) RNN&#xff1a;RNN讲解参考&am…

电气防火保护器为高校学生宿舍提供安全保障

摘 要&#xff1a;3月2日&#xff0c;清华大学紫荆学生公寓发生火情&#xff0c;无人员伤亡。推断起火原因系中厅内通电电器发生故障引燃周边可燃物所致。2月27日&#xff0c;贵州某高校女生宿舍发生火灾&#xff0c;现场明火得到有效控制&#xff0c;无人员受伤。2月19日&…

每打开一个chrome页面都会【自动打开F12开发者模式】,原因是 使用HBuilderX会影响谷歌浏览器的浏览模式

打开 HBuilderX&#xff0c;点击 运行 -> 运行到浏览器 -> 设置web服务器 -> 添加chrome浏览器安装路径 chrome谷歌浏览器插件 B站视频下载助手插件&#xff1a; 参考地址&#xff1a;Chrome插件 - B站下载助手&#xff08;轻松下载bilibili哔哩哔哩视频&#xff09…