APP中大多数据都是以缓存的形式存入本地,而这些数据在应用设置界面,清除缓存或者清除数据后都会消失。如果需要在清除数据或者缓存后还要保留某些内容,则需要换一种方式储存数据。比如,将数据存入本地文件。
可利用H5plus的native,引入java类进行处理。
读取文件:
function readJsonByFile(fileNamePath) { // 只能用于安卓 导入java类 const File = plus.android.importClass('java.io.File') const BufferedReader = plus.android.importClass('java.io.BufferedReader') const FileReader = plus.android.importClass('java.io.FileReader') const FileWriter = plus.android.importClass('java.io.FileWriter') // 安卓11以下 /sdcard/自己的文件夹/1.txt // 安卓11 建议用 /storage/emulated/0/Download/自己的文件夹/1.txt // 读取txt文件 readFile ("/sdcard/修止符/配置.json") const readFile = (fileName) => { const readFr = new File(fileName) try { const reader = new BufferedReader(new FileReader(readFr)) let txt let retxt = '' let flag = true while (flag) { txt = reader.readLine() // 读取文件 if (txt == null) { flag = false break } retxt = retxt + txt } return retxt } catch (e) { console.log(e) return '' } } //const settingJsonPath = '/sdcard/wisdomApp/settingJson.txt' const json = readFile(fileNamePath) return json }
写入文件:
function writeJsonToFile(json, fileNamePath) { // 只能用于安卓 导入java类 const File = plus.android.importClass('java.io.File') const BufferedReader = plus.android.importClass('java.io.BufferedReader') const FileReader = plus.android.importClass('java.io.FileReader') const FileWriter = plus.android.importClass('java.io.FileWriter') // 安卓11以下 /sdcard/自己的文件夹/1.txt // 安卓11 建议用 /storage/emulated/0/Download/自己的文件夹/1.txt // 写文件 writeFile("/sdcard/修止符/配置.json",{"主键":"值"}) const writeFile = (fileName, res) => { try { // 不加根目录创建文件(即用相对地址)的话directory.exists()这个判断一值都是false const n = fileName.lastIndexOf('/') if (n !== -1) { const fileDirs = fileName.substring(0, n) console.log(fileDirs) const directory = new File(fileDirs) if (!directory.exists()) { const a = directory.mkdirs() // 不存在创建目录 console.log(a) } } const file = new File(fileName) if (!file.exists()) { file.createNewFile() // 创建文件 } const fos = new FileWriter(fileName, false) fos.write(res) fos.close() return true } catch (e) { console.log(e) return false } } // const settingJsonPath = '/sdcard/wisdomApp/settingJson.txt' // 写入文件 writeFile(fileNamePath, json) return true }
需要注意到是,安卓6以上的环境,uniapp应用需要设置权限。如果设置了还不能存取文件,则可以检查一下app的应用权限,是否开启了储存权限
发表评论