1、呈现效果

2、后端

1)服务层

/// <summary>
/// 删除指定修改日期段及指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
public string DeleteSpecifiedPathAllFile(FileInfomationArgs args)
{
if(args.IsNull()))
{
return "参数为空,请重新获取!";
}
try
{
DirectoryInfo info = new DirectoryInfo(args.FilePath);
// 去除文件夹的只读属性
info.Attributes = FileAttributes.Normal & FileAttributes.Directory;
// 去除文件的只读属性
File.SetAttributes(args.FilePath, FileAttributes.Normal);
// 判断文件夹是否存在
if(Directory.Exists(args.FilePath))
{
// 按指定修改时间段删除文件
if(args.StartTime != null && args.EndTime != null)
{
List < FileInfo > fileInfomations = null;
fileInfomations = info.GetFiles().Where(t => t.LastWriteTime >= args.StartTime && t.LastWriteTime <= args.EndTime).ToList();
foreach(var fileInfo in fileInfomations)
{
if(File.Exists(fileInfo.FullName))
{
// 如果有子文件则删除子文件
File.Delete(fileInfo.FullName);
}
else
{
// 循环递归删除子文件夹的所有文件
DeleteSpecifiedPathAllFile(args);
}
}
}
else // 删除指定路径的全部文件
{
foreach(var file in Directory.GetFileSystemEntries(args.FilePath))
{
if(File.Exists(file))
{
// 如果有子文件则删除子文件
File.Delete(file);
}
else
{
// 循环递归删除子文件夹的所有文件
DeleteSpecifiedPathAllFile(args);
}
}
}
// 删除已空文件夹(此步骤会删除指定目录的最底层文件夹,建议保留文件夹目录,此句注释)
// Directory.Delete(filepath, true);
}
return "当前文件修改日期段的指定路径下的所有文件删除成功!";
}
catch(Exception ex)
{
return "删除出现异常,异常原因为:" + ex.Message;
}
}

2)请求参数类

/// <summary>
/// 文件信息参数
/// </summary>
public class FileInfomationArgs
{
private string _FilePath = "";
/// <summary>
/// 指定路径
/// </summary>
public string FilePath
{
get
{
return _FilePath;
}
set
{
_FilePath = value;
}
}
private DateTime ? _StartTime = null;
/// <summary>
/// 指定修改时间开始时间段
/// </summary>
public DateTime ? StartTime
{
get
{
return _StartTime;
}
set
{
_StartTime = value;
}
}
private DateTime ? _EndTime = null;
/// <summary>
/// 指定修改时间结束时间段
/// </summary>
public DateTime ? EndTime
{
get
{
return _EndTime;
}
set
{
_EndTime = value;
}
}
}

3)接口层

/// <summary>
/// 删除指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
public Result string DeleteSpecifiedPathAllFile(FileInfomationArgs args);

4)控制层

/// <summary>
/// 删除指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
[HttpPost, HttpOptions]
public IActionResult DeleteSpecifiedPathAllFile(FileInfomationArgs args)
{
return ToJsonContent(_服务层注入.DeleteSpecifiedPathAllFile(args));
}

3、前端

<html>
<head></head>
<body>
<template>
<el-form size="small" :model="form" :rules="rules" ref="form" label-width="120px">
<div class="head_main">
<el-row :gutter="24">
<el-col :span="20">
<div class="key_tip">
【关于文件清理的说明】
<p style="color: red;">本页面功能主要是删除本地指定日期段及指定路径下的所有文件</p>
<p style="color: green;">☞指定路径:本地文件夹的绝对路径</p>
<p style="color: green;">☞指定日期段:本地文件夹下的文件的最新修改日期</p>
</div>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="指定路径:" prop="filePath">
<el-input class="entity" type="textarea" clearable="" placeholder="请输入指定路径" v-model="form.filePath">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="指定日期段:" prop="operationTime">
<el-date-picker class="entity" v-model="operationTime" type="datetimerange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" clearable="" size="small" style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="24">
<el-form-item>
<el-button type="primary" des="el" @click="cleanUp">
清理
</el-button>
<el-button des="el" @click="reset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</template>
<script>
import { 方法名 } from '方法名所在JS文件' export default {
data () {
return {
form: {
filePath: '',
operationTime: '',
},
rules: {
filePath: [
{ required: true, message: '请输入指定路径', trigger: 'blur' },
],
},
}
},
created () {
},
methods: {
// 清理
cleanUp () {
this.$refs.form.validate(async (valid) => {
if (!valid) return
let startTime, endTime
if (this.operationTime) {
startTime = this.operationTime[0]
endTime = this.operationTime[1]
}
try {
await DeleteSpecifiedPathAllFile({
FilePath: this.form.filePath,
StartTime: startTime,
EndTime: endTime,
})
this.$notify({
type: 'success',
offset: 50,
title: '当前文件修改日期段的指定路径下的所有文件删除成功',
})
return
} catch (error) {
console.log('error:', error)
}
})
},
// 重置
reset () {
this.form.filePath = ''
this.operationTime = ''
},
},
}
</script>
<style lang="scss">
.head_main {
.key_tip {
box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
padding: 8px 16px;
background-color: #ecf8ff;
border-radius: 4px;
border-left: 5px solid #50bfff;
margin: 20px 0;
line-height: 22px;
}
}
</style>
</body>
</html>

代码和呈现效果如上所述。

注:指定路径为本地的绝对路径;指定日期段的判定依据是文件的修改日期

.net core + vue + elementui 删除指定日期段、指定路径下的所有文件的更多相关文章

  1. unity3d 依据指定的Assets下的目录路径 返回这个路径下的全部文件名称

    using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO; < ...

  2. python之实现循环查看指定路径下的所有文件---os.walk

    循环查看指定路径下的所有文件.文件夹,包含隐藏文件注:“.filename” 以点开头的是隐藏文件 import os for cur_path,cur_dirs,cur_files in os.wa ...

  3. Python3在指定路径下递归定位文件中出现的字符串

    [本文出自天外归云的博客园] 脚本功能:在指定的路径下递归搜索,找出指定字符串在文件中出现的位置(行信息). 用到的python特性: 1. PEP 318 -- Decorators for Fun ...

  4. Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间

    遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...

  5. Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名

    Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名 #编码类型 #-*- coding: UTF-8 -*- #导入包 import os import shutil srcpath ...

  6. mysql 获取指定日期到指定日期 区间段的日期

    第一种方法: cross join (就相当于mysql中的循环) CROSS JOIN 把两张表中的数据进行 N * M的组合,即笛卡尔积 这里的两张表利用 union all都有5条数据,所以进行 ...

  7. python删除执行路径下的空文件夹

    def rm_emp_dir(path): """ 删除指定路径下的空文件夹 :param path: 指定路径 :type path: str :return: Non ...

  8. 算法积累:解决如何获取指定文件夹路径或者文件路径下所有子文件后缀为.h .m .c的文本的行数

    1.先解决如何获取一个文件的代码行数 一开始对于这个问题,我的思路就回荡在:1字符串子字符串的判断 2循环直到结束的想法 3将原来是"\n"替换掉之类的想法 一个问题总会有多种解决 ...

  9. vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!

    作为图片最好放在static目录下,但是vue@cli3没有static,网上都说放在public目录下,行,那就放吧,可问题是图片放了怎么使用 第一次尝试 肯定用绝对路径这就不说了,用相对路径,we ...

  10. js实现指定日期增加指定月份

    首先,大致思路为: 1. 先将字符串格式的时间类型转化为Date类型 2. 再将Date类型的时间增加指定月份 3. 最后将Date类型的时间在转化为字符串类型 1.  先将字符串格式的时间类型转化为 ...

随机推荐

  1. C温故补缺(八):结构体与共用体

    结构体与共用体 结构体 是一个可以存储多个不同类型的变量的结构,类似于面对对象中的类(只有成员变量的类). struct tag { member-list member-list member-li ...

  2. 【笔面试题目】Java集合相关的面试题-List、Map、Set等

    一.List 1.subList 不会返回新的list对象--与String的subString不同 返回原来list的从[fromIndex,toIndex)之间这一部分的视图,实际上,返回的lis ...

  3. hook详解和应用

    一.hook的作用区域 1.客户端的过程 链接服务器 拿回资源 渲染(解析资源)资源 初始化(自执行) 页面逻辑 等待用户输入 加密数据 提交数据 2.hook的本质 在这些流程任意环节中插入自己的代 ...

  4. Java工厂模式的最佳实践?

    "Simplicity is prerequisite for reliability." - Edsger Dijkstra "简单是可靠的前提条件." -- ...

  5. js 定时器(setInterval)

    js 定时器 分类 编程技术 js 定时器有以下两个方法: setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() ...

  6. 记开源项目:DotNetCore.CAP.MySql问题分析:only mysqlparameter objects may be stored

    1.  简介 最近在学习分布式事务及解决方案,最终找到了开源项目DotNetCore.CAP ,因为自己用的MySql数据库比较多.于是也使用MySQL+EFCore+RabbitMQ+CAP实现事务 ...

  7. Linux NTP工具的基本使用

    NTP 时间同步 NTP(Network Time Protocol)协议,网络时间协议.利用ntp协议可以实现网络中的计算机时间同步. 实现NTP协议的工具: ntpdate:只能同步一次时间 nt ...

  8. Qt网络编程-书接上文,浅谈TCP文件收发,以及心跳包

    qt网络编程-书接上文,浅谈文件收发 上文Qt网络编程-从0到多线程编程中谈到 在qt中的qtcpsocket通讯的用法,接下来浅谈一下关于tcp通讯的实际应用,当然了由于是浅谈,也不能保证其功能的完 ...

  9. adb devices出现offline解决方法

    出现offline或者error: more than one device/emulator问题: 解决方法: 输入命令: adb kill-server adb start-server adb ...

  10. Python面试常见算法题集锦(递归部分)

    0x1 前言 开始学习python基础的时候,有以下几种算法是面试中常见的,也是前期学习python的时候可以连带学习了解的,不卡门槛哟 0x2 实现算法的方式很多种,而算法的实现也是分程序语言的,此 ...