uniapp 读,写,删本地文件

<template>

<view>

<view class="p-2">

<view class="bg-primary p-2 rounded flex align-center justify-center" style="color: #fff;" hover-class="bg-hover-primary" @click="dataset">写入{{count}} s</view>

</view>

<view class="p-2">

<view class="bg-primary p-2 rounded flex align-center justify-center" style="color: #fff;" hover-class="bg-hover-primary" @click="read">读取</view>

</view>

<view class="p-2">

<view class="bg-primary p-2 rounded flex align-center justify-center" style="color: #fff;" hover-class="bg-hover-primary" @click="deletes">删除</view>

</view>

</view>

</template>

<script>

import { mapState } from 'vuex'

export default {

data() {

return {

count: '',

timer: null,

resultdata:[]

}

},

computed: {

...mapState({

token:state=>{

return state.user ? state.user.token : null

},

user:state=>{

return state.user ? state.user : null

}

}),

},

methods: {

read(){

//console.log("读取")

plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs)=> {

// fs.root是根目录操作对象DirectoryEntry

let a = fs.root.toURL() //通过此方法我们可获取存储在app私用环境下的相对跟路径。

console.log(a + '/box/' + 'test.json')

fs.root.getFile(a + '/box/' + 'test.json', {

create: false

}, (fileEntry)=> {

// 文件在手机中的路径

// console.log(fileEntry.fullPath)

fileEntry.file((file)=> {

var fileReader = new plus.io.FileReader();

fileReader.readAsText(file, 'utf-8');

fileReader.onloadend =(evt)=> {

var news = [];

var result = evt.target.result;

console.log(result)

if (result != ""){

this.resultdata=JSON.parse(result)

}

}

});

});

})

},

wetir(){

//console.log("写入")

plus.io.requestFileSystem(

plus.io.PUBLIC_DOCUMENTS, // 文件系统中的根目录

fs => {

let a = fs.root.toURL() //通过此方法我们可获取存储在app私用环境下的相对跟路径。

// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象

fs.root.getFile(a + '/box/' + 'test.json', {

create: true // 文件不存在则创建

}, fileEntry => {

// 文件在手机中的路径

// console.log(fileEntry.fullPath)

fileEntry.createWriter(writer => {

// 写入文件成功完成的回调函数

writer.onwrite = e => {

console.log("写入数据成功");

};

//console.log(this.resultdata)

// 写入数据

writer.write(JSON.stringify(this.resultdata));

uni.hideLoading()

})

}, e => {

console.log("getFile failed: " + e.message);

});

},

e => {

console.log(e.message);

}

);

},

deletes(){

//console.log("删除文件")

plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs)=> {

// fs.root是根目录操作对象DirectoryEntry

let a = fs.root.toURL();

//删除目录不能指向文件名 只能指向文件夹

console.log(a+'/box/')

plus.io.resolveLocalFileSystemURL(a+'/box/' ,(entry)=> {

//读取这个目录对象

var directoryReader = entry.createReader();

//读取这个目录下的所有文件

directoryReader.readEntries((entries)=> {

console.log(entries.length)

//如果有才操作

console.log(entries, 'entries')

if (entries.length > 0) {

//删除目录将会删除其下的所有文件及子目录 不能删除根目录,如果操作删除根目录

//将会删除目录下的文件及子目录,不会删除根目录自身。 删除目录成功通过succesCB

//回调返回,失败则通过errorCB返回。

entry.removeRecursively((entry)=> {

console.log('删除成功回调')

//删除成功回调

this.resultdata=[]

}, (e) =>{

//错误信息

console.log(e.message + ' ?!')

})

}

})

})

})

},

getCode(){

const TIME_COUNT = 10; //限定时间

if (!this.timer) {

this.count = TIME_COUNT;

this.timer = setInterval(() => {

if (this.count > 0 && this.count <= TIME_COUNT) {

this.count--; //全局的数据改变 倒计时

} else {

clearInterval(this.timer);

this.timer = null; //清除定时器

//需要执行的代码

return this.$H.get(`/url`,{

token:true

}).then(res=>{

this.resultdata=res

console.log(res)

this.wetir()

}).catch(err=>{

uni.hideLoading()

})

}

}, 1000)

}

} ,

dataset(){

//避免用户重复点击

this.getCode()

uni.showLoading({

title: '同步中...'

});

},

}

}

</script>

相关推荐
胡清波1 分钟前
# vue 的 Diff 算法
前端·面试
浩龙不eMo1 分钟前
✅ Lodash 常用函数精选(按用途分类)
前端·javascript
小old弟4 分钟前
momentjs 两个时间比较大小
前端
爱分享的程序员11 分钟前
前端面试专栏-算法篇:17. 排序算法
前端·javascript·node.js
lichenyang45311 分钟前
react案例动态表单(受控组件)
前端
Jackson_Mseven11 分钟前
面试官:useEffect 为什么总背刺?我:闭包、ref 和依赖数组的三角恋
前端·react.js·面试
哎呦你好28 分钟前
【CSS】Grid 布局基础知识及实例展示
开发语言·前端·css·css3
盛夏绽放38 分钟前
接口验证机制在Token认证中的关键作用与优化实践
前端·node.js·有问必答
zhangxingchao1 小时前
Jetpack Compose 之 Modifier(中)
前端
JarvanMo1 小时前
理解 Flutter 中 GoRouter 的context.push与context.go
前端