前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.net core + vue + elementui 删除指定日期段、指定路径下的所有文件

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

原创
作者头像
GoodTime
发布2023-10-31 11:00:59
1950
发布2023-10-31 11:00:59
举报

1、呈现效果

2、后端

1)服务层

代码语言:c#
复制
/// <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)请求参数类

代码语言:c#
复制
/// <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)接口层

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

4)控制层

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

3、前端

代码语言:javascript
复制
<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>

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

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

以上就是MySQL 版本号排序的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、呈现效果
  • 2、后端
    • 1)服务层
      • 2)请求参数类
        • 3)接口层
          • 以上就是MySQL 版本号排序的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
      • 3、前端
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档