一、需求说明
当我们的项目开发完成部署到生产环境使用后,为了便于后续的运维工作(对问题及时排查和解决)在项目中编写了一些关于对异常情况或者实时数据自动生成对应的日志文件等内容,但是随着时间的流逝,这些日志文件内容会越来越多,自然占用的存储空间会不断增加,而我们自己手动去删除又会很麻烦,此时我们就需要一个工具来自动清理(最好是能够指定删除的文件类型、指定删除的时间范围、或者根据指定的文件大小去删除等)。
二、需求分析
通过分析以上的需求可以总结出以下内容:
①日志文件一般情况下是在指定文件夹生成,需要实时检测这个文件夹;
②文件夹可能会嵌套多层,需要能够获取到所有的文件内容;
③获取到文件类型、文件的时间、文件的大小
三、实现方法
定时自动删除指定文件夹下文件的Winform应用程序(下载后可直接使用)
3.1、选择文件夹
/// <summary>
/// 选择文件夹
/// </summary>
/// <returns>返回选择的文件夹路径</returns>
public static string SelectFolder()
{
string strFolder = string.Empty;
System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
strFolder = fbd.SelectedPath;
}
return strFolder;
}
3.2、获取指定文件夹下的文件
//获取到文件夹下的所有文件(含子目录)的缓存文件列表
private static List<FileInfo> _ListTmp = new List<FileInfo>();
/// <summary>
/// 获取到文件夹下的所有文件(含子目录文件)
/// </summary>
/// <param name="strFolder">需要遍历的文件夹(绝对路径)</param>
/// <returns>返回当前目录及其子目录下所包含的所有文件</returns>
private static List<FileInfo> GetFolderAndSubFolderIncludeFile(string strFolder)
{
if (!string.IsNullOrEmpty(strFolder))
{
try
{
DirectoryInfo Folders = new DirectoryInfo(strFolder);
DirectoryInfo[] DirInfo = Folders.GetDirectories();//获取所在目录的文件夹
FileInfo[] File = Folders.GetFiles();//获取所在目录的文件
foreach (FileInfo fileInfo in File) //遍历文件
{
//result += "dirName:" + fileItem.DirectoryName + " fileName:" + fileItem.Name + "\n";
_ListTmp.Add(fileInfo);
}
//遍历文件夹
foreach (DirectoryInfo NextFolder in DirInfo)
{
GetFolderAndSubFolderIncludeFile(NextFolder.FullName);
}
}
catch (Exception ex)
{
throw ex;
}
}
else
{
_ListTmp = null;
}
return _ListTmp;
}
3.3、获取到文件类型、时间和大小
扫描二维码关注公众号,回复:
14613415 查看本文章