【uniapp】存储数据到本地文件以及读取本地文件数据

      可能存在的问题:

                1、高版本的安卓系统可能在文件系统中看不到文件但是可以读取

                2、该方法在安卓10系统中可能会有问题

一、读取本地文件

        // 读取本地文件的方法 参数1为文件名称,参数2为回调方法用于处理获取到的文件数据
		fetchFileData(fileName,callback) {
			plus.io.requestFileSystem(
				plus.io.PUBLIC_DOWNLOADS, // 文件系统中的根目录
				fs => {
					// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
					fs.root.getFile(fileName, {
						create: true // 文件不存在则创建
					}, fileEntry => {
						// 文件在手机中的路径
						console.log('文件在手机中的路径', fileEntry.fullPath)
						fileEntry.file(function(file) {
							var fileReader = new plus.io.FileReader();
							console.log("getFile:" + JSON.stringify(file));
							fileReader.readAsText(file, "utf-8")
							fileReader.onloadend = function(res) { //读取文件内容成功后的回调事件
								//res.target.result读取到的文件内容信息
								console.log('最后读取文件内容是=======', res.target.result)
								callback(res.target.result)
							}
						});
					}, e => {
						console.log('报错111', "getFile failed: " + e.message);
					});
				},

				e => {
					console.log('报错222', e.message);
				}
			);
		},

二、存储数据到本地文件

// 参数1为文件名称 参数2是文件内容 参数3是回调参数		
saveFile(fileName,fileInfo,callback) {
			// 请求本地文件系统对象
			plus.io.requestFileSystem(
				plus.io.PUBLIC_DOWNLOADS, // 文件系统中的根目录
				fs => {
					// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
					fs.root.getFile(fileName, {
						create: true // 文件不存在则创建
					}, fileEntry => {
						// 文件在手机中的路径
						console.log('最后文件在手机中的路径========', fileEntry.fullPath)
						fileEntry.createWriter(writer => {
							// 写入文件成功完成的回调函数
							writer.onwrite = e => {
								console.log("写入数据成功");
								callback(true)
							};
							// 写入数据
							writer.write(JSON.stringify(fileInfo));
						})
					}, e => {
						callback(false)
						console.log('报错111', "getFile failed: " + e.message);
					});
				},
				e => {
					console.log('报错222', e.message);
					callback(false)
				}
			);
		},

 

  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值