uniapp安卓读取写入txt或json文件
uniapp读写txt或者json文件
·
最近项目中需要用uniapp读取本地环境下的
txt
文件,上网搜了一番之后发现了解决方案,故记录一下。
1. 读取txt
文件
原理:利用H5 plus
的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
}
2. 写入文件
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
}
3. 注意
安卓6以上的环境, uniapp
应用需要设置存储权限。可以在APP权限配置
选项里把
WRITE_EXTERNAL_STORAGE 打上对钩。 结束
更多推荐
已为社区贡献3条内容
所有评论(0)