uni-app设定本地文件保存天数,超时删除

uni-app设定本地文件过期时间,清除超时文件,释放内存

dataNum为文件的保质期

	//获取当前n天之前的日期
			getDelTime(dataNum){
				let today = new Date();
				let nDaysAgo = new Date(today.setDate(today.getDate() - dataNum));
				let year = nDaysAgo.getFullYear();
				let month = nDaysAgo.getMonth() + 1; // 月份是从0开始的,所以需要加1
				let day = nDaysAgo.getDate();
				// 将年月日转换为数字格式的字符串,不带任何分隔符-------n天前的年月日
				let numericDate = year.toString() + 
								  (month < 10 ? '0' + month : month).toString() + 
								  (day < 10 ? '0' + day : day).toString();	
				this.delExpiredFile(Number(numericDate))
			},

			//循环遍历视频图片文件夹,遍历出n天前的文件list,并执行删除操作
			async delExpiredFile(maxTime){
				// console.log('maxTime',maxTime);
				//获取所有图片文件
				await this.getImgList(maxTime)
				//获取所有视频文件
				await this.getVideoList(maxTime)

			},
			
			getImgList(maxTime){
				// console.log('开始获取图片',maxTime);
				this.imgNameList=[]
				plus.io.resolveLocalFileSystemURL(
					"/storage/emulated/0/_A/img", //指定的目录
					(entry) => {
						let directoryReader = entry.createReader(); //获取读取目录对象
						directoryReader.readEntries(
							(entry) => { //历遍子目录
							entry.forEach((entryA)=> {
								if (entryA.isFile) {
									// 获取文件名
									let fileName = entryA.name;
									this.imgNameList.push(fileName)
								}
							});
							this.imgNameList.forEach((item)=> {
								let extractedString = item.substring(4, 12);
								let  result =Number(extractedString)
								if(result < maxTime){
									console.log("将要删除的图片名",item);
									this.delFile(item,"picture")
								}
							});
							},
							(err) => {
								console.log("访问目录失败");
							});
					},
					(err) => {
						console.log("访问指定目录失败:" + err.message);
				});
			},
			
			getVideoList(maxTime){
				this.videoNameList=[]
				plus.io.resolveLocalFileSystemURL(
					"/storage/emulated/0/_A/video", //指定的目录
					(entry) => {
						let directoryReader = entry.createReader(); //获取读取目录对象
						directoryReader.readEntries(
							(entry) => { //历遍子目录即可
							entry.forEach((entryB)=> {
									if (entryB.isFile) {
										// 获取文件名
										let fileName = entryB.name;
										this.videoNameList.push(fileName)
									}
								});
							this.videoNameList.forEach((item)=> {
								let extractedString = item.substring(6, 14);
								let  result =Number(extractedString)
								if(result < maxTime){
									this.delFile(item,"video")
								}
							});
							},
							(err) => {
								console.log("访问目录失败");
								
							});
					},
					(err) => {
						console.log("访问指定目录失败:" + err.message);
				});
			},
				
			//删除文件
			delFile(fileName,fileType){
				console.log('将要删除的文件名fileName',fileName);
				return new Promise((resolve, reject) => {
					let filePath=null
					if(fileType=="video"){
						filePath=`/storage/emulated/0/_A/video/${fileName}`
					}else if(fileType=="picture"){
						filePath=`/storage/emulated/0/_A/img/${fileName}`
					}
					//删除视频文件					
					plus.io.resolveLocalFileSystemURL(filePath, (entry)=> {   
						 // 删除文件
						entry.remove(()=> {
							console.log('文件删除成功');
						}, function(error) {
							console.error('文件删除失败:' + error.code);
						});
					});
				})
			},

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值