开发工具与关键技术:Visual Studio 2015   定时任务
作者:孙水兵
撰写时间:2019年7月7

一、 达到的效果
将项目中因为发生异常或者其他原因而导致图片未能从临时目录转入最终目录的所有图片定时清除。或者将项目的最终目录存在而数据中没有相对应的路径的图片定时清除。

二、 前期准备
添加定时任务的引用:在添加引用时添加FluentScheduler.dll文件(在我的博客中:定时插件FluentScheduler的使用 中有详细说明)。

三、 删除临时目录中所有图片
在添加的工作类中获取项目的运行目录,利用AppDomain.CurrentDomain.BaseDirectory +Document\BusinessManagement\Temp来获取项目中临时目录的绝对路径。其中AppDomain.CurrentDomain是用来获取项目所在的绝对路径,然后在拼接上临时目录在项目中的路径,由此,就获得了项目中临时目录的绝对路径。然后判断是否存在该路径。如果不存在存在该路径,就创建一个路径。若是存在该路径,继续往下执行。然后利用方法GetDirectories来获取临时目录中的所有目录。然后foreach循环获取到的子目录。然后删除子目录。再获取到临时目录中的子文件夹,然后删除。

四、 删除最终目录存在而数据库中没有相对应的路径的图片
思路:获取到最终目录中所有图片的路径和查出数据库中所有图片的路径,然后获取到所有图片的名称。将获取到最终目录中所有图片的名称等于从数据库中查出所有图片的名称的图片名称从将获取到最终目录中所有图片的名称列表中删除。
第一步:在工作类中实例化Models

在删除临时目录的下面写删除最终目录存在而数据库中没有相对应的路径的图片的代码。
第二步:获取最终目录中的所有图片的名称和路径并且new一些用来接收的集合
和删除临时目录一样,先获取到最终目录的绝对路径。然后根据GetFiles获取到绝对路径下面的所有文件的名称(包括路径)并将其放入string[] 类型的变量fileDriverPic中。然后new两个string类型的集合,分别为 listPicName、listPicNameMuLu。listPicName是用来放入从数据库中查出的所有图片的名称,listPicNameMuLu是用来放入最终目录中的所有图片的名称。
第三步:从数据库中查出所有的图片路径。然后对比,删除。
从数据库中查询出所有的图片的路径,并用变量listDrivrPicSrc来接收。然后foreach循环listDrivrPicSrc。因为从数据库中查询出来的是图片路径,需要将路径中图片的名称提取出来。(从数据库中获取到的图片的路径:"/Document/BusinessManagement/Driverimg/7HE3f刀光剑影.PNG")。因此用到了方法Substring()。然后将图片名称放入listPicName中。从项目中的最终路径中获取到的图片路径也是如此处理。处理完之后将图片名称放入listPicNameMuLu中。
然后foreach循环处理完之后的从数据库中获取到的图片名称的集合listPicName。然后在最终目录中的所有图片的名称的集合listPicNameMuLu中移除listPicName中存在的。这样就将最终目录中多余的图片的名称获取到了。然后foreach这些名称,拼接然路径,然后删除。

定时调用:(在我的博客中:定时插件FluentScheduler的使用 中详细说明)

全部代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FluentScheduler;
using System.IO;
using TransportManagment.Models;namespace TransportManagment.Timer
{public class RemoveDriverPict : IJob{Models.TransportManagmentEntities myModels = new TransportManagmentEntities();public void Execute(){//删除临时目录中所有图片//获取项目运行目录+Document\BusinessManagement\Temp来获取临时目录的绝对路径string str = AppDomain.CurrentDomain.BaseDirectory + "Document\\BusinessManagement\\Temp";try{if (Directory.Exists(str)){//存在Temp目录,就删除所有的子目录和子文件夹//删除子文件夹string[] directory = Directory.GetDirectories(str);foreach (string item in directory){Directory.Delete(item, true);}//删除子文夹string[] files = Directory.GetFiles(str);foreach (string file in files){System.IO.File.Delete(file);}}else{//不存在,就创建目录Directory.CreateDirectory(str);}}catch (Exception e){Console.WriteLine(e);}//删除驾驶员图片中重复的图片//获取项目运行目录+Document\BusinessManagement\Driverimgstring strPic = AppDomain.CurrentDomain.BaseDirectory + "Document\\BusinessManagement\\Driverimg"; string[] fileDriverPic = Directory.GetFiles(strPic);List<string> listPicName = new List<string>();List<string> listPicNameMulu = new List<string>();var listDrivrPicSrc = (from tbDriver in myModels.SYS_Driverselect tbDriver.DriverPicture).ToList();foreach (string item in listDrivrPicSrc){string picName = item.Substring(39);listPicName.Add(picName);}foreach (string item in fileDriverPic){string picName = item.Substring(116);listPicNameMulu.Add(picName);}foreach (string item in listPicName){listPicNameMulu.Remove(item);}foreach (string item in listPicNameMulu){string RemovePic = "F:\\NET\\mvc\\MVC\\MVC练习\\客运站售票系统\\项目:客运站售票系统\\TransportManagment\\TransportManagment\\Document\\BusinessManagement\\Driverimg\\" + item;System.IO.File.Delete(RemovePic);}}}
}

定时清除项目中不需要的图片相关推荐

  1. 前端:一键清除项目中无用的console.log代码

    关注并将「趣谈前端」设为星标 每天定时分享技术干货/优秀开源/技术思维 前言 说起console.log调试,不用多说,那是非常的好用,开发中帮助我们解决了不少Bug.我们经常能在开发环境中看见这一坨 ...

  2. java web添加背景图片_java web项目中如何插入背景图片

    对于java可视化界面插入背景图片这个倒是轻而易举,只需要background-inage:url(图片路径就行),而对于与web项目中,我开始时也是采用这种方法,但是不尽然,代码如下: 效果如下: ...

  3. VS项目中配置matplotlib-cpp绘制图片

    很难让人接受的是,相比Python,在VS项目中使用C++绘图竟然是一件困难的事.当然,我也用过一些开源的C++绘图工具库,但是始终不能让人满意.结果是,我会利用opencv绘制部分图片,另外配合py ...

  4. kindeditor java_kindeditor在Java项目中的应用以及图片上传配置

    在官网下载Kindededitor的开发包 在项目中javaweb项目中导入kindeditor必须要使用的Jar包(用于文件上传,除非你的富文本编辑器不使用图片上传)jar包可以在官网的开发包中找到 ...

  5. android项目添加图片,安卓开发:往项目中添加并使用图片

    一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...

  6. vue项目中img使用svg图片修改颜色

    需求:就是左边是文字,右边是文字,中间是一个箭头图片 前言:抛开vue项目已经封装好了svg的组件这种来讲,封装的可以直接使用color来进行改变颜色,然后这里讲下没有封装的写法 1:首先改svg图片 ...

  7. [盘点]项目中可以怎么优化图片

    看似平常的事物,往往会蕴含的巨大的智慧.把看似平常的事物简单做好,可能很正常.如果能把平常的事物做精,做细,这个不平常. 1.前言 每一个开发者在开发项目中,不可避免要和图片打交道,优化图片似乎也成了 ...

  8. 移动光标到相应的文本(比如项目中,插入了图片之后,即在插入的地方显示光标)

           在选定的文本框中,点击了光标,进行了额外的操作,比如说,进行图片的插入.表情的插入之后,如果是直接在改dom元素中进行focus操作的话,光标的位置会直接放置文本的最后,而不是我们期望的 ...

  9. 如何清除项目中的临时文件

    在很多系统中,我们都需要临时存储一下文件,然后文件使用过后,或者文件N久不用,则需要将这些不再使用的临时文件清除. 这个时候不能整个文件件的进行删除,不然会出现误删的情况(比如某个临时文件刚刚生成,正 ...

最新文章

  1. 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮
  2. 五连阳回调买入法_只要出现“4连阳+1阴”形态,坚定满仓干进去,百分百是主升浪...
  3. rono在oracle的作用_oracle中rownum作用及用法
  4. 虚拟机几种网络连接方式的区别
  5. python3操作excel(xls与xlsx版本的爱恨情仇)
  6. 悲痛!南京大学又一女博士跳楼身亡!半年已4位…
  7. [转载] python字符串查找的四种方法
  8. Paragon NTFS提示安装分卷失败,怎么解决
  9. ThreadPoolExecutor源码学习(一) -核心属性及应用
  10. C++之常用集合(总结)
  11. 2021年度总结—四非计算机保研经历(参营:清华网研院、中科大先研院、华师大数据科学院、厦大计算机系、上科大信息学院)
  12. 臭名昭著的Java”
  13. 投影机检测不到计算机信号,投影仪搜索不到信号源怎么办?这几种操作方法可进行修复...
  14. win2012服务器 注册表,Windows Server2012删除或添加开机启动项的方法
  15. 『征文精选』技术翻译与术语管理技术:专业人说专业话
  16. Windows系统SNMP数据监测与OID
  17. 大数据——corejava学习笔记
  18. CADtools 插件 for Mac(AI工程制图插件包) 中文特别版
  19. 嵌入式开发学习之--用蜂鸣器来传递摩斯码
  20. 电动汽车充电桩资料搜集

热门文章

  1. git 使用步骤,超级详细
  2. 浅谈PHP实现伪静态_莫枫恋_新浪博客
  3. 【翻译】Sencha现状 ———采访Atanas Popov
  4. 【BSV资讯】图瓦卢国家数字账本:赋能于全球首批区块链公民
  5. 第十话-模板方法模式
  6. DataGridView 设置选中行、自适应列宽
  7. TEE 开发入门知识
  8. SEO | 影响网站排名的重要因素!
  9. Switch配件joycon摇杆模块的各个IO定义和用法说明
  10. STM32以太网通信-LWIP简介