uniapp 安卓写入 和 读取本地文件

  • APP中大多数据都是以缓存的形式存入本地,而这些数据在应用设置界面,清除缓存或者清除数据后都会消失。如果需要在清除数据或者缓存后还要保留某些内容,则需要换一种方式储存数据。比如,将数据存入本地文件。
  • 可利用H5plus的native,引入java类进行处理。
    需要注意到是,安卓6以上的环境,uniapp应用需要设置权限。如果设置了还不能存取文件,则可以检查一下app的应用权限,是否开启了储存权限
  • 读取文件
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
}

文章来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值