如何定时清空临时文件夹中的文件

如何定时清空临时文件夹中的文件


开发工具与关键技术:Visual Studio 

作者:胡宁淇

撰写时间:2019年4月14日

在我们上传文件到HTML页面的时候,在没有正式保存之前,我们一般会把这些文件暂时存放到一个临时文件夹里面,而正式保存之后,临时文件夹里面的文件却并没有删除,久而久之,当临时文件夹里面的文件越来越多时就会影响整个项目的运行速度,所以我们就写了一个方法来定时清空临时文件夹里面的文件。

这个方法需要借用一个插件才能实现定时清空的功能,所以我们先把插件引用进来,引用的是这个插件。

在这里插入图片描述

然后我们创建一个类,在这个类里面写方法

在这里插入图片描述

public class FluentScheduler
{

    // 启动定时任务

    //public static void StartUp()

    //{

    //   

JobManager.Initialize(new MyRegistry());

    //}

   // 停止定时任务

    

    //public static void Stop()

    //{

    //   

JobManager.Stop();

    //}

}

我们用私有类创建一个待处理的作业工厂

internal class MyRegistry: Registry

{

    在构造函数中设置好各个Job的执行计划,下面是执行清空各个时间段,我们是用的是在每天2点前清空数据

    public MyRegistry() {

        // 立即执行计划任务,并根据指定时间间隔执行一次计划任务

        //(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)

        //Schedule<TestJob>().ToRunNow().AndEvery(10).Seconds();



        // 延迟一个指定时间间隔执行一次计划任务。

       //(当然,这个间隔依然可以是秒、分、时、天、月、年等。)

//Schedule().ToRunOnceIn(10).Seconds();

//在一个指定时间执行计划任务 每个小时的第10分钟执行

//Schedule().ToRunEvery(1).Hours().At(10);

// 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)

//Schedule().ToRunEvery(1).Days().At(13,
10);

//每n年的第几天

//Schedule().ToRunEvery(1).Years().On(5);

//每n年的最后一天

//Schedule<TestJob>().ToRunEvery(1).Years().OnTheLastDay();

//每n月的第几天

//Schedule().ToRunEvery(1).Months().On(1);

//每n月的第一个星期的星期5 的15:0执行 //Schedule().AndThen().ToRunEvery(1).Months().OnTheFirst(DayOfWeek.Friday).At(15,
0);

//每n月的第一个星期的星期5 的15:0执行 CleanJob和TestJob //Schedule().AndThen().ToRunEvery(1).Months().OnTheFirst(DayOfWeek.Friday).At(15,
0);

        //在每天2点前清理数据

        Schedule<CleanJob>().ToRunNow().AndEvery(10).Days().At(2,

00);

    }

}

下面就是操作要清空的文件夹了,用于清理

Document\Temp目录的临时文件

internal class CleanJob : IJob

{

    void IJob.Execute() {

        获取项目运行目录+Document\Temp来获取临时目录的绝对路径

        string str = AppDomain.CurrentDomain.BaseDirectory + "Document\\Temp\\";

        try

        {

            //判读是否存在Temp目录

            if (Directory.Exists(str))

            {

                //存在Temp目录,就删除所有的子目录和子文件



                //获取指定目录中的子目录的名称(包括其路径)。

                string[] directtores = Directory.GetDirectories(str);

遍历循环 Document\Temp\
里面的所有文件和子目录

                foreach (string directory in directtores)

                {

                    //删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。

                    Directory.Delete(directory,true);

                }

                //返回指定目录中文件的名称(包括其路径)。

                string[] files = Directory.GetFiles(str);

                foreach (string file in files)

                {

                    // 删除指定的文件。

                    File.Delete(file);

                }

            }

            else

            {

                // 不存在,就创建Temp目录

                Directory.CreateDirectory(str);

            }

        }

        catch (Exception e)

        {

            Console.WriteLine(e);

        }

    }

}

写完方法后我们想在项目启动的时候就清空,那么我们可以把启动定时任务的代码写在整个项目的入口,也就是里面的

在这里插入图片描述

Application_Start方法是整个项目的入口

protected void Application_Start()

    {

        //初始化定时任务--定时任务就在这里加载

        JobManager.Initialize(new MyRegistry());



    }

下面来看一下效果,我们可以看到一开始临时文件夹中是有文件的

在这里插入图片描述

当我们启动项目之后就发现临时文件夹中的文件已经被清空掉了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44552856/article/details/89371036
今日推荐