分类: C# 2010-11-12 13:44362人阅读收藏举报
- using System;
- using System.IO;
- using System.Text.RegularExpressions;
- class App
- {
- static void Main()
- {
- Console.WriteLine("##########################【程序使用说明】############################");
- Console.WriteLine("--目 的:本程序用来删除指定文件夹下包含指定字段的文件用--------------");
- Console.WriteLine("--第一步:选择要进行处理的文件夹路径(提示:通过左上角进行粘贴)---------");
- Console.WriteLine("--第二步:确认是否包含子文件夹文件------------------------------------");
- Console.WriteLine("--第三步:输入要文件名匹配的字符串(如果匹配,则该文件将会被删除)-------");
- Console.WriteLine("--第四步:确认执行删除操作,下面开始运行程序---------------------------");
- Console.WriteLine("######################################################################");
- Console.WriteLine("请输入目录名称:");
- string strDirectoryName=Console.ReadLine();
- DirectoryInfo myDI=new DirectoryInfo(strDirectoryName);
-
- Console.WriteLine("是否包含子目录?YES | NO :");
- string containChildren=Console.ReadLine().Trim();
- Console.WriteLine("请输入匹配正则:");
- string regStr=Console.ReadLine();
- switch(containChildren.ToLower())
- {
- case "yes":
- Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【删除前】文件名包含指定字段的文件清单:", w);
- }
- ShowDirectoryFilesAllLevel(myDI);
- Console.WriteLine("确认要删除吗?YES | NO :");
- if(Console.ReadLine().ToLower()=="yes")
- {
- Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【删除】文件名与"+regStr+"匹配的文件:", w);
- }
- DeleteFilesAllLevel(myDI,regStr);
-
- Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【删除后】文件夹下文件清单:", w);
- }
- ShowDirectoryFilesAllLevel(myDI);
- Console.WriteLine("执行完毕!按任意键继续...");
- Console.Read();
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【执行完毕!】", w);
- }
- break;
- }
- else
- {
- break;
- }
- case "no":
- Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
- ShowDirectoryFilesOneLevel(myDI);
- Console.WriteLine("确认要删除吗?YES | NO :");
- if(Console.ReadLine().ToLower()=="yes")
- {
- Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【删除前】文件名包含指定字段的文件清单:", w);
- }
- DeleteFilesOneLevel(myDI,regStr);
-
- Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【删除后】文件夹下文件清单:", w);
- }
- ShowDirectoryFilesOneLevel(myDI);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("【执行完毕!】", w);
- }
- break;
- }
- else
- {
- break;
- }
- default:
- Console.WriteLine("输入不正确,请输入单词:yes或No!");
- break;
- }
- }
-
- private static void DeleteFilesOneLevel(DirectoryInfo dir,string regStr)
- {
- FileInfo[] myFileInfo=dir.GetFiles();
- foreach(FileInfo file in myFileInfo)
- {
- Regex regex1=new Regex(regStr);
- bool b=regex1.IsMatch(file.Name);
- if(b)
- {
- File.Delete(file.FullName);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 删除文件:"+file.Name, w);
- }
- }
- }
- }
- private static void ShowDirectoryFilesOneLevel(DirectoryInfo dir)
- {
- FileInfo[] myFileInfo=dir.GetFiles();
- if(myFileInfo.Length==0)
- {
- Console.WriteLine("当前目录下没有文件!");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 当前目录下没有文件!", w);
- }
- }
- else
- {
- foreach(FileInfo file in myFileInfo)
- {
- Console.WriteLine(" "+file.Name);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 文件名称:"+file.Name, w);
- }
- }
- }
- }
-
- private static void DeleteFilesAllLevel(DirectoryInfo dir,string regStr)
- {
- DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();
- FileInfo[] myFileInfo = dir.GetFiles();
- if(myFileInfo.Length==0)
- {
- Console.WriteLine("当前目录下没有文件!");
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 当前目录下没有文件!", w);
- }
- }
- else
- {
- foreach(FileInfo file in myFileInfo)
- {
- Regex regex1=new Regex(regStr);
- bool b=regex1.IsMatch(file.Name);
- if(b)
- {
- File.Delete(file.FullName);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 删除文件:"+file.Name, w);
- }
- }
- }
- }
- foreach(DirectoryInfo DirInfo in myDirectoryInfo)
- {
- Console.WriteLine("文件夹:"+DirInfo.Name);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("文件目录:"+DirInfo.FullName, w);
- }
- DeleteFilesAllLevel(DirInfo,regStr);
- }
- }
- private static void ShowDirectoryFilesAllLevel(DirectoryInfo dir)
- {
- DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();
- FileInfo[] myFileInfo = dir.GetFiles();
- foreach(FileInfo file in myFileInfo)
- {
- Console.WriteLine(" "+file.Name);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log (" 文件名称:"+file.Name, w);
- }
- }
- foreach(DirectoryInfo DirInfo in myDirectoryInfo)
- {
- Console.WriteLine("文件夹:"+DirInfo.Name);
- using (StreamWriter w = File.AppendText("log.txt"))
- {
- Log ("文件目录:"+DirInfo.FullName, w);
- }
- ShowDirectoryFilesAllLevel(DirInfo);
- }
- }
- public static void Log (String logMessage, TextWriter w)
- {
- w.WriteLine("{0} {1}", DateTime.Now.ToString(), logMessage);
- }
- }
|