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的应用权限,是否开启了储存权限

举报/反馈

我的华仔部落

86获赞 119粉丝
一个追求自由的程序员
关注
0
0
收藏
分享