当前位置: 首页 > news >正文

uniapp plus.io API 封装文件读写方法

// plus.io API 封装的文件读写方法/*** 写入 JSON 到文件* @param {string} fileName 文件名称(如 '_downloads/device.json' 或 plus.io.PRIVATE_DOC + '/device.json')* @param {Object} data 要写入的对象* @returns {Promise<boolean>} 是否写入成功*/
function writeJsonToFile(fileName, data) {const filePath = `_downloads/${fileName}.json`return new Promise((resolve, reject) => {plus.io.resolveLocalFileSystemURL(filePath, function(entry) {entry.createWriter(function(writer) {writer.onwrite = function() {console.error('写入成功', fileName);resolve(true);};writer.onerror = function(e) {console.error('写入失败', e);reject(false);};writer.write(JSON.stringify(data));}, function(e) {console.error('创建写入器失败', e);reject(false);});}, function(e) {// 文件不存在则创建plus.io.resolveLocalFileSystemURL(filePath.substring(0, filePath.lastIndexOf('/')),function(dirEntry) {dirEntry.getFile(filePath.substring(filePath.lastIndexOf('/') + 1), {create: true}, function(fileEntry) {fileEntry.createWriter(function(writer) {writer.onwrite = function() {resolve(true);};writer.onerror = function(e) {console.error('写入失败', e);reject(false);};writer.write(JSON.stringify(data));}, function(e) {console.error('创建写入器失败', e);reject(false);});}, function(e) {console.error('创建文件失败', e);reject(false);});},function(e) {console.error('目录不存在', e);reject(false);});});});
}/*** 读取 JSON 文件内容* @param {string} filePath 文件路径(如 '_downloads/device.json' 或 plus.io.PRIVATE_DOC + '/device.json')* @returns {Promise<Object|null>} 读取到的对象,失败返回 null*/
function readJsonByFile(fileName) {const filePath = `_downloads/${fileName}.json`return new Promise((resolve, reject) => {plus.io.resolveLocalFileSystemURL(filePath, function(entry) {entry.file(function(file) {var reader = new plus.io.FileReader();reader.onloadend = function(evt) {try {resolve(JSON.parse(evt.target.result));} catch (e) {console.error('JSON解析失败', e);resolve(null);}};reader.onerror = function(e) {console.error('读取失败', e);resolve(null);};reader.readAsText(file, 'utf-8');}, function(e) {console.error('获取文件失败', e);resolve(null);});}, function(e) {console.error('文件不存在', fileName, e);resolve(null);});});
}export default {writeJsonToFile,readJsonByFile
};

用法示例:
写入:

 import storage from '@/utils/storage.js'await storage.writeJsonToFile('companyInfo', {a:1})

读取:

 let obj = await storage.readJsonByFile('companyInfo')if (obj) {console.log('读取到内容:', obj);} else {console.log('读取失败或内容为空');}});
http://www.dtcms.com/a/344093.html

相关文章:

  • 【IDEA2017】使用设置+创建项目的不同方式
  • GaussDB SQL引擎(1)-SQL执行流程与解析器和优化器
  • 【Qt调试】断点时,Expressions不能查看变量
  • 新手向:用FastAPI快速构建高性能Web服务
  • 单北斗变形监测系统应用指南
  • c++:MFC中sqlite3的使用(附实际案例)
  • VScode远程连接Ubuntu报错问题分析
  • 表格识别技术:通过图像处理与深度学习,将非结构化表格转化为可编辑结构化数据,推动智能化发展
  • Mac电脑英特尔版本最新系统15.6.1安装php环境
  • 机试备考笔记 18/31
  • 使用 JS 渲染页面并导出为PDF 常见问题与修复
  • Laravel 使用阿里云OSS S3 协议文件上传
  • 高效稳定的仁懋MOSFET系列,打造卓越服务器电源
  • 【C++闯关笔记】封装②:友元与模板
  • git新建项目如何推送到远程仓库
  • 深度学习②【优化算法(重点!)、数据获取与模型训练全解析】
  • 医疗AI中的电子病历智能化:Model Context Protocol使用从规则编码到数据涌现
  • 齐次变换矩阵的逆变换:原理与SymPy实现
  • 零音乐基础想创作?通过cpolar,ACE-Step远程编曲如此简单
  • Gauth-字节在海外推出的AI学习辅助应用
  • FFmpeg添加水印
  • 学习嵌入式第三十五天
  • PCB电路设计学习2 元件原理图封装的添加 手工设计元件封装
  • LeetCode100 -- Day4
  • webpack开发模式与生产模式(webpack --mode=development/production“, )
  • 如何修复“DNS服务器未响应”错误
  • OpenHarmony子系统介绍
  • LLM实践系列:利用LLM重构数据科学流程01
  • 数据分析专栏记录之 -基础数学与统计知识 2 概率论基础与python
  • OpenHands:开源AI软件开发代理平台的革命性突破