1、呈现效果

2、后端

1)服务层

  1. /// <summary>
  2. /// 删除指定修改日期段及指定路径下的所有文件
  3. /// </summary>
  4. /// <param name="filepath">指定路径</param>
  5. /// <returns>返回删除结果提示</returns>
  6. public string DeleteSpecifiedPathAllFile(FileInfomationArgs args)
  7. {
  8. if(args.IsNull()))
  9. {
  10. return "参数为空,请重新获取!";
  11. }
  12. try
  13. {
  14. DirectoryInfo info = new DirectoryInfo(args.FilePath);
  15. // 去除文件夹的只读属性
  16. info.Attributes = FileAttributes.Normal & FileAttributes.Directory;
  17. // 去除文件的只读属性
  18. File.SetAttributes(args.FilePath, FileAttributes.Normal);
  19. // 判断文件夹是否存在
  20. if(Directory.Exists(args.FilePath))
  21. {
  22. // 按指定修改时间段删除文件
  23. if(args.StartTime != null && args.EndTime != null)
  24. {
  25. List < FileInfo > fileInfomations = null;
  26. fileInfomations = info.GetFiles().Where(t => t.LastWriteTime >= args.StartTime && t.LastWriteTime <= args.EndTime).ToList();
  27. foreach(var fileInfo in fileInfomations)
  28. {
  29. if(File.Exists(fileInfo.FullName))
  30. {
  31. // 如果有子文件则删除子文件
  32. File.Delete(fileInfo.FullName);
  33. }
  34. else
  35. {
  36. // 循环递归删除子文件夹的所有文件
  37. DeleteSpecifiedPathAllFile(args);
  38. }
  39. }
  40. }
  41. else // 删除指定路径的全部文件
  42. {
  43. foreach(var file in Directory.GetFileSystemEntries(args.FilePath))
  44. {
  45. if(File.Exists(file))
  46. {
  47. // 如果有子文件则删除子文件
  48. File.Delete(file);
  49. }
  50. else
  51. {
  52. // 循环递归删除子文件夹的所有文件
  53. DeleteSpecifiedPathAllFile(args);
  54. }
  55. }
  56. }
  57. // 删除已空文件夹(此步骤会删除指定目录的最底层文件夹,建议保留文件夹目录,此句注释)
  58. // Directory.Delete(filepath, true);
  59. }
  60. return "当前文件修改日期段的指定路径下的所有文件删除成功!";
  61. }
  62. catch(Exception ex)
  63. {
  64. return "删除出现异常,异常原因为:" + ex.Message;
  65. }
  66. }

2)请求参数类

  1. /// <summary>
  2. /// 文件信息参数
  3. /// </summary>
  4. public class FileInfomationArgs
  5. {
  6. private string _FilePath = "";
  7. /// <summary>
  8. /// 指定路径
  9. /// </summary>
  10. public string FilePath
  11. {
  12. get
  13. {
  14. return _FilePath;
  15. }
  16. set
  17. {
  18. _FilePath = value;
  19. }
  20. }
  21. private DateTime ? _StartTime = null;
  22. /// <summary>
  23. /// 指定修改时间开始时间段
  24. /// </summary>
  25. public DateTime ? StartTime
  26. {
  27. get
  28. {
  29. return _StartTime;
  30. }
  31. set
  32. {
  33. _StartTime = value;
  34. }
  35. }
  36. private DateTime ? _EndTime = null;
  37. /// <summary>
  38. /// 指定修改时间结束时间段
  39. /// </summary>
  40. public DateTime ? EndTime
  41. {
  42. get
  43. {
  44. return _EndTime;
  45. }
  46. set
  47. {
  48. _EndTime = value;
  49. }
  50. }
  51. }

3)接口层

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

4)控制层

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

3、前端

  1. <html>
  2. <head></head>
  3. <body>
  4. <template>
  5. <el-form size="small" :model="form" :rules="rules" ref="form" label-width="120px">
  6. <div class="head_main">
  7. <el-row :gutter="24">
  8. <el-col :span="20">
  9. <div class="key_tip">
  10. 【关于文件清理的说明】
  11. <p style="color: red;">本页面功能主要是删除本地指定日期段及指定路径下的所有文件</p>
  12. <p style="color: green;">☞指定路径:本地文件夹的绝对路径</p>
  13. <p style="color: green;">☞指定日期段:本地文件夹下的文件的最新修改日期</p>
  14. </div>
  15. </el-col>
  16. </el-row>
  17. <el-row :gutter="24">
  18. <el-col :span="12">
  19. <el-form-item label="指定路径:" prop="filePath">
  20. <el-input class="entity" type="textarea" clearable="" placeholder="请输入指定路径" v-model="form.filePath">
  21. </el-input>
  22. </el-form-item>
  23. </el-col>
  24. </el-row>
  25. <el-row :gutter="24">
  26. <el-col :span="12">
  27. <el-form-item label="指定日期段:" prop="operationTime">
  28. <el-date-picker class="entity" v-model="operationTime" type="datetimerange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" clearable="" size="small" style="width:100%">
  29. </el-date-picker>
  30. </el-form-item>
  31. </el-col>
  32. </el-row>
  33. <el-row :gutter="15">
  34. <el-col :span="24">
  35. <el-form-item>
  36. <el-button type="primary" des="el" @click="cleanUp">
  37. 清理
  38. </el-button>
  39. <el-button des="el" @click="reset">
  40. 重置
  41. </el-button>
  42. </el-form-item>
  43. </el-col>
  44. </el-row>
  45. </div>
  46. </el-form>
  47. </template>
  48. <script>
  49. import { 方法名 } from '方法名所在JS文件'
  50. export default {
  51. data () {
  52. return {
  53. form: {
  54. filePath: '',
  55. operationTime: '',
  56. },
  57. rules: {
  58. filePath: [
  59. { required: true, message: '请输入指定路径', trigger: 'blur' },
  60. ],
  61. },
  62. }
  63. },
  64. created () {
  65. },
  66. methods: {
  67. // 清理
  68. cleanUp () {
  69. this.$refs.form.validate(async (valid) => {
  70. if (!valid) return
  71. let startTime, endTime
  72. if (this.operationTime) {
  73. startTime = this.operationTime[0]
  74. endTime = this.operationTime[1]
  75. }
  76. try {
  77. await DeleteSpecifiedPathAllFile({
  78. FilePath: this.form.filePath,
  79. StartTime: startTime,
  80. EndTime: endTime,
  81. })
  82. this.$notify({
  83. type: 'success',
  84. offset: 50,
  85. title: '当前文件修改日期段的指定路径下的所有文件删除成功',
  86. })
  87. return
  88. } catch (error) {
  89. console.log('error:', error)
  90. }
  91. })
  92. },
  93. // 重置
  94. reset () {
  95. this.form.filePath = ''
  96. this.operationTime = ''
  97. },
  98. },
  99. }
  100. </script>
  101. <style lang="scss">
  102. .head_main {
  103. .key_tip {
  104. box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
  105. padding: 8px 16px;
  106. background-color: #ecf8ff;
  107. border-radius: 4px;
  108. border-left: 5px solid #50bfff;
  109. margin: 20px 0;
  110. line-height: 22px;
  111. }
  112. }
  113. </style>
  114. </body>
  115. </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. redis五种数据结构详解

    5.相关介绍和命令 5. redis是单线程+多路io复用技术 多路复用是指使用一个线程来检查多个文件描述符的就绪状态,比如调用select和poll函数,传入多个文件毛舒服,如果有一个文件描述符就绪 ...

  2. Armv8之Execution State 和 Exception Level(一)

    @ 目录 1. 典型的Exception Level使用模型 2.异常相关术语 3. Execution State 3.1 两种Execution State 3.2 决定Execution Sta ...

  3. springMVC环境的搭建(一)

    概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...

  4. 网络I/O模型 解读

    网络.内核 网卡能「接收所有在网络上传输的信号」,但正常情况下只接受发送到该电脑的帧和广播帧,将其余的帧丢弃. 所以网络 I/O 其实是网络与服务端(电脑内存)之间的输入与输出 内核 查看内核版本 : ...

  5. 【Zookeeper】结构、应用、安装部署与参数、客户端命令行操作、API应用、内部原理(选举机制、写数据、监听器)

    一.Zookeeper入门 1.概述 分布式服务管理框架(存储和管理数据) Zookeeper=文件系统+通知机制 2.特点 主从集群 半数以上,正常工作 请求顺序执行 数据更新具有原子性 3.数据结 ...

  6. day03-功能实现02

    家居网购项目实现02 5.功能04-会员登录 5.1需求分析/图解 需求如图: 输入用户名.密码后提交 判断该用户是否存在 如果存在,显示登录成功页面 否则返回登录页面,要求重新登录 要求改进登录密码 ...

  7. Burp Suite安装

    1.Burpsuite简介  Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击. Burp Suite 由Java语言编写,基于J ...

  8. 3D视觉算法初学概述

    背景知识 RGB-D相机 一,基于3DMM的三维人脸重建技术概述 1.1,3D 人脸重建概述 1.2,初版 3DMM 二,视觉SLAM算法基础概述 2.1,视觉里程计 2.2,后端优化 2.3,回环检 ...

  9. (6)go-micro微服务consul配置、注册中心

    目录 一 Consul介绍 1. 注册中心Consul基本介绍 2.注册中心Consul关键功能 3.注册中心Consul两个重要协议 二 Consul安装 1.使用docker拉取镜像 三 Conf ...

  10. [WPF]项目整合Metro和MaterialDesignInXamlToolkit UI框架

    项目地址 MapApps:Metro MaterialDesignInXamlToolkit:MaterialDesignInXamlToolkit MapApps官网:官网链接 官方整合文档 官方提 ...