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>

相关推荐
菲兹园长18 小时前
CSS(展示效果)
前端·javascript·css
我的收藏手册18 小时前
性能监控shell脚本编写
前端·git·github
fantasy_arch18 小时前
SVT-AV1编码器中实现WPP依赖管理核心调度
java·前端·av1
香香甜甜的辣椒炒肉18 小时前
vue(7)-单页应用程序&路由
前端·javascript·vue.js
高级测试工程师欧阳18 小时前
HTML 表格基础
前端
不买Huracan不改名19 小时前
安装Codex(需要用npm)
前端·npm·node.js
Dorcas_FE19 小时前
axios请求缓存与重复拦截:“相同请求未完成时,不发起新请求”
前端·spring·缓存
dreams_dream19 小时前
vue中axios与fetch比较
前端·javascript·vue.js
梦鱼19 小时前
Vue 项目图标一把梭:Iconify 自用小记(含 TS/JS 双版本组件)
前端·javascript·vue.js