uniapp 移动端 持久化数据在客户端

这段代码展示了如何在本地私有文档目录中保存和读取JSON格式的数据。saveFileData函数用于根据指定路径保存内容,支持追加或覆盖写入;readFile函数用于读取文件内容并回调处理结果;此外,还提供了删除文件的功能,尤其针对iOS系统。

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

//content为存放的数据内容, 
export function saveFileData(content) {
	var filePath = "_doc/userInfo.json"; // filePath为存放路径(如:_doc/xxx/xxx.json) 注意:路径一定要_doc开头的,
	var isAppend = false; // isAppend为true时:追加内容, false时:重新写入
	plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
		// fs.root是根目录操作对象DirectoryEntry
		fs.root.getFile(filePath, {
			create: true
		}, function(fileEntry) {
			fileEntry.createWriter(function(writer) {
				writer.onwrite = function(e) {
					console.log("saveFileData保存成功!");
				};
				var data = JSON.stringify(content);
				if (isAppend) {
					try {
						writer.seek(writer.length);
					} catch (e) {
						console.log("file doesn't exist!");
					}
				}
				writer.write(data);
				console.log('saveFileData保存数据成功:' + data);
			}, function(e) {
				console.log('saveFileData保存数据失败');
			});
		});
	}, function(e) {
		console.log('saveFileData保存数据失败');
	});
}
// 读取
export function readFile(callback){
	var filePath = "_doc/userInfo.json"; // filePath为存放路径(如:_doc/xxx/xxx.json) 注意:路径一定要_doc开头的,
	callback = callback || mui.noop;
	plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
		// fs.root是根目录操作对象DirectoryEntry
		fs.root.getFile(filePath, {
			create: false
		}, function(fileEntry) {
			fileEntry.file(function(file) {
				console.log(file.size + '--' + file.name);
				var fileReader = new plus.io.FileReader();
				fileReader.readAsText(file, 'utf-8');
				fileReader.onloadend = function(evt) {
					var news = [];
					var result = evt.target.result;
					if (result != "" && result != null) {
						console.log("读取成功缓存成功:" + result);
						callback({
							state: 1,
							message: "读取成功!",
							data: result
						});
					} else {
						console.log("读取文件失败--------")
						callback({
							state: 0,
							message: "读取失败!",
							data: result
						});
					}
				}
			});
		},function(fail) {
			console.log("读取文件路径失败--------")
			callback({
				state: 0,
				message: "读取失败!无文件",
				data: fail
			});
			console.log(fail);
		});
	}, function(e) {
		callback({
			state: -1,
			message: e.message
		});
	});
}
//删除delFile: function(filePath) {
        if (plus.os.name == 'iOS') {
            filePath = 'file://' + filePath;
        }
        //var filePath = 'userInfo/';
        plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
            console.log('删除entry:' + entry);
            //读取这个目录对象    
            var directoryReader = entry.createReader();
            //读取这个目录下的所有文件    
            directoryReader.readEntries(function(entries) {
                console.log('删除entries:' + entries)
                //如果有才操作    
                if (entries.length > 0) {
                    //删除目录将会删除其下的所有文件及子目录 不能删除根目录,如果操作删除根目录  
                    //将会删除目录下的文件及子目录,不会删除根目录自身。 删除目录成功通过succesCB  
                    //回调返回,失败则通过errorCB返回。  
                    entry.removeRecursively(function(entry) {
                        console.log('删除成功回调')
                        //删除成功回调    
                    }, function(e) {
                        //错误信息    
                        console.log(e.message + ' ?!')
                    })
                }
            })
        })
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值