uniapp存储数据到手机文件,app卸载重装后数据依然存在

文章介绍了在uniapp开发中,如何利用手机文件系统实现数据持久化存储,即使app卸载重装,数据仍然可以保留。通过创建一个名为`storage.js`的文件,导出`storage`对象,包含`storage`和`read`两个方法,分别用于写入和读取文件系统中的数据,使用`plus.io.requestFileSystem`和`FileWriter`进行文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用uniapp开发手机app时,有的数据我们需要保存在本地,有许多方式都可以实现,比如localstorage,sessionstorage,indexDB或者sqlite。但是上面这种方式都有一个问题,就是app卸载之后保存的数据也会随之一起删除。今天介绍一个app卸载重装后数据依然存在的方法,思路就是把数据存储到手机的文件系统中,下面是代码实现。

新建一个storage.js的文件

export default {
	storage(addr, data) {
		plus.io.requestFileSystem(
			plus.io.PRIVATE_DOC, // 程序私有文档目录常量
			fs => {
				// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
				fs.root.getFile(
					addr, {
						create: true // 文件不存在则创建
					},
					fileEntry => {
						// 文件在手机中的路径
						fileEntry.createWriter(writer => {
							// 写入文件成功完成的回调函数
							writer.onwrite = e => {
								console.log('写入成功');
							};
							// 向文件中写入数据
							writer.write(
								JSON.stringify(data)
							);
						});
					},
					e => {
						console.log('getFile failed: ' + e.message);
					}
				);
			},
			e => {
				console.log(e.message);
			}
		);
	},
	read(addr) {
		let that = this;
		return new Promise((resolve, reject) => {
			plus.io.requestFileSystem(
				plus.io.PRIVATE_DOC,
				fs => {
					fs.root.getFile(
						addr, {
							create: false
						},
						fileEntry => {
							fileEntry.file(function(file) {
								console.log('文件大小:' + file.size + '-- 文件名:' + file.name);
								//创建读取文件对象
								let fileReader = new plus.io.FileReader();
								//以文本格式读取文件数据内容
								fileReader.readAsText(file, 'utf-8');
								//文件读取操作完成时的回调函数
								fileReader.onloadend = function(evt) {
									resolve(evt.target.result)
								};
							});
						},
						e => {
							reject(e)
							console.log(e)
						}
					);
				},
				e => {
					reject(e);
					console.log(e.message);
				}
			);
		})

	}
}

在需要使用的页面引入并使用

import storage from '@/utils/storage .js'

storage.read('/storage/emulated/0/portData').then(res=>{
    //文件读取成功,res就是读取到的数据
}).catch(err=>{
    //未找到文件,调用storage方法创建portData文件,yourData 是你存储的数据。
	storage.storage('/storage/emulated/0/portData',yourData)
})

注意文件文件地址"/storage/emulated/0/'文件名称'"不要写错。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值